亚马逊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控制台下,创建一个新频道,将此新频道命名为“appstream”。
  • 右键单击“appstream”频道,然后选择“Copy Link”。保存链接以供以后使用。

第四步 – 为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控制台下,确认所需队列量已增加:

下列图显示了队列成功增加到50:

结论

通过此博客,我们向您展示了一种使用协作工具来管理AWS AppStream2.0队列的简便方法。您可以进一步利用Slack提取相关AWS AppStream2.0 的 AWS CloudWatch数据,以监视AWS AppStream2.0队列的状态并从Slack频道管理队列。

本篇作者

徐欣蕾

Amazon Web Services公司专业服务团队WorkSpaces顾问。

Vaibhav Singh

Amazon Web Services公司专业服务团队顾问。

Ash Seshadri

Amazon Web Services公司专业服务团队AppStream2.0和WorkSpaces顾问。