亚马逊AWS官方博客
利用 Slack 和 AWS AppStream2.0 集成进行 AppStream2.0 Fleet 队列管理
AWS AppStream 2.0是一项完全托管的非持久性应用程序和桌面服务。您可以在 AppStream 2.0 上集中管理桌面应用程序,并将它们安全地交付到任何计算机上。 AppStream 2.0具有内置功能,可以扩展到全球任何数量的用户,而无需购买,供应和操作硬件或基础架构。Slack是一个专有的商业通信平台,提供许多IRC样式的功能,包括按主题,私人团体和直接消息组织的持久聊天室。
该博客着重介绍了一种方法,该方法可用于使用协作工具Slack直接地触发AppStream2.0按需扩展规模,而无需使用API或登录AWS控制台。这使管理员和用户的工作更加轻松的管理AppStream2.0。
让我们开始建立这个解决方案吧
技术细节
开始之前,需要满足以下先决条件:
- 配置了
- 服务的AWS账户
- 备用帐户
逐步设置
第一步 – 为AWS Lambda函数创建AWS IAM执行角色
首先是创建IAM执行角色, 为Lambda函数提供执行AppStream2.0机群大小增加所需的权限。
下面介绍创建IAM角色的步骤。
- 登录到AWS控制台。在控制台中选择IAM服务。
- 在左侧面板中选择“Policies”,然后单击“Create Policy”。
- 在以下策略中,将显示的AWS_ACCOUNT_ID和FLEET_NAME替换为您的AWS账户ID号和0 队列的名称。关于如何创建Appstream2.0 队列,请参阅我们的文档。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"appstream:DescribeStacks",
"appstream:UpdateFleet",
"appstream:ListAssociatedFleets",
"appstream:DescribeSessions",
"appstream:DescribeUserStackAssociations",
"appstream:DescribeFleets",
"appstream:ListAssociatedStacks"
],
"Resource": [
"arn:aws:appstream:*:AWS_ACCOUNT_ID:fleet/FLEET_NAME"
"arn:aws:appstream:*:*:stack/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"appstream:GetImageBuilders",
"appstream:DescribeDirectoryConfigs",
"appstream:DescribeUsers",
"appstream:DescribeUsageReportSubscriptions",
"appstream:ListTagsForResource"
],
"Resource": "*"
}
]
}
- 在下一页中,选择“ JSON”选项卡。将更新的IAM策略(在步骤3中)复制并粘贴到JSON窗口中。
- 单击“Review Policy”。
- 在下一页中,为此新创建的策略提供名称 “AppStreamFleetIncreasePolicy”。
- 选择“创建策略”。成功创建策略后,下一步是创建IAM执行角色并将此策略附加到角色。
- 在IAM控制台下,在左侧面板中选择“角色”。
- 选择“Create Role”。
- 在下一页中,选择“ Lambda”服务作为用例。
- 单击“Next: Permissions”。
- 选择策略“ AppStreamFleetIncreasePolicy”,然后单击“Next: Tags”。
- 单击“Next: Review” 。
- 提供名称“ AppStreamFleetIncreaseRole”和说明。
- 选择“Create role”。
第二步 – 创建Lambda函数以触发AppStream2.0 队列大小增加
- 打开AWS Lambda控制台。
- 在Lambda控制台下。选择“创建功能”以创建一个新功能,以触发AppStream2.0队列规模增加。
- 提供函数的名称和运行时。选择您在上一步中创建的IAM执行角色。
- 选择“Create Function”。
- 双击函数名称以打开您刚刚创建的函数。
- 在以下脚本中更新以下参数:
Parameter | Description | Value set in this example |
Name | The name of your AppStream2.0 fleet | ExampleFleet |
DesiredInstances* | The number of AppStream2.0 instances you wish to increase to. | 50* |
*在此示例中,我们将值设置为50。但是,默认的最大队列规模配额为10。要请求增加配额,请联系AWS支持团队。
- 复制代码并将其粘贴到功能代码编辑器中。
'use strict';
/**
This AppStream2 Lambda function increases the size of the fleet to 50 instances.
**/
const AWS = require('aws-sdk');
const appstream = new AWS.AppStream();
const fleetParams = {
Name: 'ExampleFleet', /* change this value */
ComputeCapacity: {
DesiredInstances: 50 /* change this value */
}
};
exports.handler = (event, context, callback) => {
console.log('Received event:', JSON.stringify(event, null, 2));
fleetParams.ComputeCapacity.DesiredInstances
appstream.updateFleet(fleetParams, (error, data) => {
if (error) {
console.log(error, error.stack);
return callback(error);
}
console.log(data);
return callback(null, data);
});
};
- 单击“Save”以保存Lambda函数。
第三步 – 创建一个Slack频道
第四步 – 为Slack频道设置Chatbot
- 登录到AWS Chatbot控制台。
- 从控制台的下拉列表中选择“ Slack”作为聊天客户端。
- 点击配置。
- 页面被重定向到Slack频道页面。点击“Allow”以登录到Slack。
- 页面重定向回到AWS控制台后,单击”Configure New Channel”。
- 在Slack频道配置页面下,提供配置名称“ AppstreamIncrease50”。选择“Private”频道类型并提供频道ID –这是您在上一步中复制的频道ID。
- AWS Chatbot需要具有IAM角色才能运行命令并触发AWS Lambda函数。提供Chatbot的角色名称,然后选择以下策略模板:
Notification permissions
Read-only command permissions
Lamda-invoke command permissions
AWS Support command permissions
- 检查设置,然后单击“Configure”。
最后一步 – 邀请AWS Chatbot进入您的Slack频道。
- 打开您的Slack频道,然后输入“ / invite @aws”以邀请AWS Chatbot进入该频道。
- 要执行增加队列的大小,请键入以下命令以增加队列的大小:“@ aws lambda invoke –function-name FleetIncrease50 –region ap-northeast-1”请注意,此命令将队列规模增加到50。请根据需要调整数量。
- 返回的消息应类似于以下内容:
- 在AWS AppStream2.0控制台下,确认所需队列量已增加:
结论
通过此博客,我们向您展示了一种使用协作工具来管理AWS AppStream2.0队列的简便方法。您可以进一步利用Slack提取相关AWS AppStream2.0 的 AWS CloudWatch数据,以监视AWS AppStream2.0队列的状态并从Slack频道管理队列。