使用 AWS Chatbot 实现 DevOps 通知 - 向 Slack / Teams 推送 AWS 事件
介绍将 CloudWatch 告警和 CodePipeline 通知推送到 Slack / Teams,并通过 @aws 命令从聊天中操作 AWS 的 ChatOps 环境的构建方法。
Chatbot 的机制与支持的服务
AWS Chatbot(现在的名称为 Amazon Q Developer in chat applications)是一种 ChatOps 服务。它将 AWS 的通知发送到 Slack、Microsoft Teams 等聊天频道,并从那里操作 AWS。将 SNS 主题与聊天频道关联后,发布到该主题的消息就会通知到聊天中。支持的 AWS 服务涵盖 CloudWatch 告警、AWS Health、Security Hub、Budgets、CodePipeline、CodeBuild、GuardDuty、Systems Manager、Config 等众多服务。通知以各服务各自的格式显示,CloudWatch 的指标可以以图表形式附上。
通知的设置与 ChatOps
设置的步骤有 3 个。将 Slack 工作区或 Teams 租户连接到 Chatbot,选择频道,然后关联 SNS 主题。在 CloudWatch 告警的通知中,当告警转换为 ALARM 状态时,会向 Slack 频道发布消息,并附上指标的图表。通过 ChatOps 功能,可以在聊天频道中使用 @aws 命令执行 AWS CLI。例如,可以通过 @aws lambda invoke --function-name my-function 调用 Lambda 函数,或通过 @aws cloudwatch describe-alarms --state-value ALARM 列出处于告警状态的告警。在事件响应时,可以在聊天频道上推进状况的确认和响应的操作,减少切换界面的麻烦。
安全与访问控制
在 Chatbot 的频道设置中关联 IAM 角色,控制可以从该频道执行的 AWS 操作。可以考虑这样的配置:生产环境的操作只允许从专用的 ops 频道进行,一般的开发频道只允许只读操作。Chatbot 在执行命令之前,会确认该命令是否被频道的 IAM 角色和护栏策略所允许,因此缩小允许的 IAM 操作,可以降低误操作波及生产环境的风险。Chatbot 的操作日志记录在 CloudTrail 中,因此可以审计谁在什么时间执行了哪个命令。Chatbot 本身的使用费用免费,只产生 SNS 的推送费用。
Chatbot 的费用
AWS Chatbot 可以免费使用。向 Slack 或 Teams 推送通知、从聊天中执行 AWS CLI 均不产生额外费用。产生费用的只有作为通知触发源的 SNS 主题(每 100 万次请求约 0.50 美元),以及因 ChatOps 中执行的 AWS 操作而创建 / 变更的资源的费用(截至 2026 年 8 月)。由于无需额外费用即可引入,可以将其作为提升运维可见性和响应速度的手段加以考虑。
通知的整理与噪声削减
通知过多时,重要的警报就会被淹没。按用途划分频道,例如生产故障发到专用频道、信息共享发到其他频道,这样分流可以减少遗漏。按重要程度准备 SNS 主题,并在 Chatbot 的频道设置中设计将哪个主题发送到哪个频道。关键在于不是一律发送所有告警,而是缩小到需要响应的告警。保持通知一来就有人响应的状态,聊天就能持续作为有意义的运维中心发挥作用。
与 CloudWatch 告警的有效联动
要发挥 Chatbot 的价值,所发送告警本身的质量很重要。使用组合多个条件的复合告警(Composite Alarm),会抑制单一指标的暂时波动造成的误报,更容易只针对有问题的状况发出通知。在告警中包含能让人了解发生了什么以及应首先确认的步骤的信息,收到告警的人就能立即行动。由于会附上告警状态的图表,可以形成在聊天中把握趋势、只在需要深入调查时才转到控制台的流程。
与其他通知方式的选用
聊天通知适合将信息送到团队日常查看的地方。另一方面,在深夜发生重大故障、需要叫醒负责人时,与进行电话或推送通知的专用值班平台组合使用是现实的做法。由 Chatbot 负责白天的协同响应和状况可视化,将需要升级的严重程度发送到值班路径,这样的角色分工很有效。以 SNS 为中心,就可以将同一事件同时推送到聊天、邮件、值班工具等多条路径,减少通知的遗漏。
ChatOps 运维的最佳实践
能够从聊天中操作 AWS 的便利性,与误操作的风险是一体两面的。将为每个频道授予的 IAM 角色缩小到最小权限,并将以只读为主的频道和允许有限变更操作的频道分开。对生产环境的破坏性操作,原则上通过正规的管道或运行手册进行,聊天中只进行状况确认和轻微的处理,这样是安全的。执行日志会保留在 CloudTrail 中,因此定期回顾操作历史。将常用的调查步骤固定在频道中,更容易避免响应工作偏向特定的人。
总结
AWS Chatbot 是将 Slack 和 Teams 变为 AWS 运维中心的 ChatOps 服务。可以构建这样的运维:通过告警通知尽早发现事件,通过从聊天中执行的 AWS 操作推进响应,并通过 IAM 角色控制访问。可以免费使用、引入门槛低这一点也很有吸引力。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。