使用 AWS Chatbot 实现 DevOps 通知 - 向 Slack/Teams 推送 AWS 事件

将 CloudWatch 告警和 CodePipeline 通知推送到 Slack/Teams,通过 @aws 命令从聊天中操作 AWS,构建 ChatOps 环境。

Chatbot 的机制与支持的服务

AWS Chatbot 是向 Slack 和 Microsoft Teams 推送 AWS 通知,并从聊天频道操作 AWS 的 ChatOps 服务。通过将 SNS 主题关联到聊天频道,发布到该主题的消息会通知到聊天中。支持的 AWS 服务包括 CloudWatch 告警、AWS Health、Security HubBudgetsCodePipelineCodeBuildGuardDutySystems ManagerConfig 等众多服务。通知消息以针对各服务优化的格式显示,可直观把握告警状态转换图和流水线阶段进展。

通知设置与 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 频道操作生产环境,一般开发频道仅允许只读操作。通过 Guardrail 策略可限制每个频道允许的 IAM 操作,防止误操作对生产环境的影响。Chatbot 的操作日志记录在 CloudTrail 中,可审计谁在何时执行了什么命令。Chatbot 本身免费使用,仅产生 SNS 的发送费用。 如需深入了解 Slack 通知的运维经验,可参考专业书籍(Amazon)

Chatbot 的费用

AWS Chatbot 免费使用。向 Slack 或 Teams 推送通知、从聊天执行 AWS CLI 均不产生额外费用。产生成本的仅有触发通知的 SNS 主题(每百万请求约 0.50 美元)和通过 ChatOps 执行的 AWS 操作所创建或修改的资源费用。免费导入且大幅提升运维可见性和响应速度,推荐所有团队采用。

总结

AWS Chatbot 将 AWS 的通知和操作集成到 Slack/Teams 中,实现 ChatOps 环境。CloudWatch 告警、CodePipeline 状态、Security Hub 发现等通知实时推送到聊天频道,通过 @aws 命令从聊天中操作 AWS。IAM 角色和 Guardrail 策略确保安全性,CloudTrail 提供审计追踪。免费使用且设置简单,是 DevOps 团队的必备工具。