亚马逊AWS官方博客

AWS Chatbot 现已与 Microsoft Teams 集成

我很高兴地宣布,从今天开始,您可以使用 AWS Chatbot 对来自 Microsoft Teams 的 AWS 资源进行故障排除和操作。

通过聊天渠道针对 IT 操作任务进行的交流和协作称为 ChatOps。它允许您集中管理基础架构和应用程序,并自动化和简化工作流程。它有助于提供更具互动性和协作性的体验,因为您可以通过熟悉的聊天界面与同事进行实时沟通和合作,从而完成工作。

我们在 2020 年推出了集成 Amazon ChimeSlack 的 AWS Chatbot。从那时起,聊天平台的格局发展迅速,你们中的许多人现在都在使用 Microsoft Teams。

AWS Chatbot 的优势
使用适用于 Microsoft Teams 或其他聊天平台的 AWS Chatbot 时,您可以直接在聊天频道中收到来自 AWS 服务的通知,并且无需切换到其他工具,即可通过键入命令对基础架构采取操作。

通常,您希望收到有关系统运行状况、预算、任何新的安全威胁或风险或 CI/CD 管道状态的警报。向聊天频道发送消息就像发送有关 Amazon Simple Notification Service(Amazon SNS)主题的消息一样简单。由于 Amazon CloudWatch 警报和 SNS 之间的原生集成,警报会自动发送到您的聊天频道,无需额外的配置步骤。同样,由于 Amazon EventBridge 和 SNS 之间的集成,向 EventBridge 发送事件的任何系统或服务都可以向您的聊天频道发送信息。

但是 ChatOps 不仅仅是能够在问题出现时发现问题。AWS Chatbot 允许您以交互方式接收预定义的 CloudWatch 仪表板,并直接从聊天会话中检索 Logs Insights 日志以解决问题。您也可以直接在聊天频道中键入大多数 AWS 命令行界面(AWS CLI)命令来检索其他遥测数据或资源信息,或者运行运行手册来修复问题。

键入和记住长命令很困难。使用 AWS Chatbot,您可以定义自己的别名来引用常用命令及其参数。它减少了完成任务所需的步骤数。别名很灵活,可以包含查询时注入的一个或多个自定义参数。

而且,由于聊天频道专为对话而设计,您还可以用自然语言提问,并让 AWS Chatbot 使用 AWS 文档或支持文章的相关摘录来回答您。自然语言理解还允许您进行查询,例如“show me my ec2 instances in eu-west-3”。

让我们配置 AWS Chatbot 和 Microsoft Teams 之间的集成
入门分为两步。首先,我在 Microsoft Teams 中配置我的团队。作为 Teams 管理员,我将 AWS Chatbot 应用程序添加到团队中,并记下了我想要用来接收通知和操作来自 Microsoft Teams 频道的 AWS 资源的频道的 URL。

其次,我在 AWS Chatbot 中注册 Microsoft Teams 频道。我还为频道成员在该频道中可以执行的操作分配 IAM 权限,并关联 SNS 主题以接收通知。我可以使用 AWS 管理控制台AWS CloudFormation 模板或 AWS Cloud Development Kit(AWS CDK)配置 AWS Chatbot。在本演示中,我选择使用控制台。

我打开管理控制台并导航至 AWS Chatbot 部分。在屏幕右上角的配置聊天客户端框中,我选择 Microsoft Teams,然后选择配置客户端

我输入了我在 Teams 应用程序中记下的 Microsoft Teams 频道 URL

向 Chatbot 添加团队频道 URL在此阶段,Chatbot 将我的浏览器重定向到 Microsoft Teams 进行身份验证。如果我已经通过身份验证,我会立即被重定向回 AWS 管理控制台。否则,我会输入我的 Microsoft Teams 凭证和一次性密码,然后等待重定向。

在这个阶段,我的 Microsoft Teams 团队已在 AWS Chatbot 中注册,准备好添加 Microsoft Teams 频道。我选择配置新频道

Chabot 现在已链接到您的 Microsoft Teams有四个部分可以输入配置的详细信息。在第一部分中,我输入了我的频道的配置名称。(可选)我还定义了日志详细信息。在第二部分中,我再次粘贴了 Microsoft Teams 频道 URL

配置 Chatbot 第一部分和第二部分

在第三部分中,我配置了权限。我可以在为团队中的所有 Microsoft Teams 用户设置同一组权限之间进行选择,也可以设置用户级角色权限以在频道中启用用户特定的权限。在本演示中,我选择了频道角色,然后为频道分配了一个 IAM 角色。该角色定义了频道中所有用户共享的权限。例如,我可以分配一个角色,允许用户访问来自 Amazon EC2 的配置数据,但不能访问 Amazon S3 的配置数据。在渠道角色下,我选择使用现有 IAM 角色。在现有角色下,我选择了我为有关 ChatOps 的 2019 re:Invent 讨论创建的角色:chatbot-demo。该角色提供对所有 AWS 服务的只读访问权限,但我也可以分配其他角色,允许 Chatbot 用户对其 AWS 资源进行操作。

为了降低团队中其他人意外地向频道或用户级角色授予超出必要权限的风险,您还可以加入频道防护机制策略。这些是您的用户在使用该频道时可能拥有的最大权限。在运行时,实际权限是频道或用户级策略与防护机制策略的交叉点。防护机制策略就像频道用户永远无法逃脱的边界。该概念类似于 IAM 实体的权限边界AWS Organizations 服务控制策略(SCP)。在此示例中,我附上了 ReadOnlyAcces 管理策略

配置 Chatbot 第三部分

第四部分也是最后一部分,允许您指定 SNS 主题,该主题将作为发送到团队频道的通知的来源。您的应用程序或 AWS 服务,例如 CloudWatch 警报,可以向该主题发送消息,而 AWS Chatbot 会将所有消息中继到配置的 Microsoft Teams 频道。得益于 Amazon EventBridge 和 SNS 之间的集成,能够向 EventBridge 发送消息的任何应用程序都能向 Microsoft Teams 发送消息。

在本演示中,我选择了一个现有的 SNS 主题:us-east-1 区域中的 alarmme。您可以配置多个 SNS 主题以接收来自不同区域的警报。然后我选择配置

配置 Chatbot 第四部分让我们测试集成
就是这样。现在我准备测试我的设置。

在 AWS Chatbot 配置页面上,我首先选择发送测试消息。当我的预计账单超过 500 美元时,我还会定义警报。在管理控制台的 CloudWatch 部分,我将警报配置为发布一条关于与 Microsoft Teams 共享的 SNS 主题的消息。

几秒钟之内,我在 Microsoft Teams 频道上收到了测试消息和警报消息。

与 Microsoft Teams 合作的 AWS Chatbot,频道上收到的第一条消息

然后我键入一个命令以了解账单警报来自哪里。我想了解有多少 EC2 实例在运行。

在聊天客户端频道上,我键入 @aws 选择 Chatbot 作为目标,然后输入 CLI 命令的其余部分,就像我在终端中所做的那样:ec2 describe-instances --region us-east-1 --filters "Name=architecture,Values=arm64_mac" --query "Reservations[].Instances[].InstanceId"

Chatbot 在几秒钟内回答。

AWS Chatbot 描述实例

我可以为我经常使用的命令创建别名。别名可能有占位符参数,我可以在运行时给出,例如区域名称。

我创建别名来获取我的 macOS 实例 ID 列表,命令为:aws alias create mac ec2 describe-instances --region $region --filters "Name=architecture,Values=arm64_mac" --query "Reservations[].Instances[].InstanceId"

现在,我可以输入 @aws alias run mac us-east-1 作为快捷方式,以获得与上面相同的结果。我还可以使用 @aws 别名列表@aws 别名获取@aws 别名删除命令来管理我的别名。

我不了解您,但对我来说很难记住命令。当我使用终端时,我依靠自动完成来提醒我各种命令及其选项。AWS Chatbot 提供了类似的命令完成功能,并指导我收集缺失的参数。

AWS Chatbot 命令完成功能

使用 AWS Chatbot 时,我还可以使用自然英语提问。它可以通过键入诸如 @aws how can I tag my EC2 instances? 或者 @aws how do I configure Lambda concurrency setting? 之类的问题来帮助从 AWS 文档和支持文章中找到答案。

激活 AWS 资源探索器后,它还可以在我的账户中查找资源。例如,我询问机器人:@aws 我的 ec2 资源的标签是什么?以及 @aws 我在哪些区域有 Lambda 服务?

我收到了这些回复。

AWS Chatbot NLP 回复 1 AWS Chatbot NLP 回复 2 多亏了 AWS Chatbot,我才意识到我在 ca-central-1中还剩下一个恶意的 Lambda 函数。我使用 AWS 管理控制台将其删除。

现已推出
您现在就可以开始在 Microsoft Teams 中使用 AWS Chatbot 了。适用于 Microsoft Teams 的 AWS Chatbot 可从 Microsoft Teams 应用程序下载,无需额外付费。AWS Chatbot 可在所有公共 AWS 区域使用,无需额外付费。您为使用的基础资源付费。您的聊天客户端可能会向您收取费用。

立即开始配置 Microsoft Teams 的首次集成

— seb