摘要:AWS 中国区暂时不支持 Health Organizational View,多账号健康事件分散难以统一管理。本文介绍一种基于 EventBridge 跨账号事件转发的集中通知方案,通过 Hub-Spoke 架构将多个账号的 Health Event 聚合,并自动推送到飞书、钉钉、Teams、企业微信、Slack 等主流即时通讯工具,CloudFormation 一键部署,Serverless 架构无需预置资源。
目录
01 一、背景与挑战
02 二、方案架构
03 三、技术实现
04 四、部署指南
05 五、通知效果展示
06 六、扩展方向
07 七、总结
一、背景与挑战
Amazon Personal Health Dashboard(PHD)为每个账号提供基础设施维护、产品生命周期变更等健康事件通知。然而在多账号环境下,PHD 事件管理存在以下痛点:
- 事件分散难追踪:运维人员需要逐一登录各账号查看健康事件,响应效率低
- 通知渠道不统一:团队使用不同的即时通讯工具,缺乏统一的事件通知机制
- 缺乏集中视图:中国区暂时不支持 Health Event 的 Organizational View 功能,无法在组织层面集中查看所有成员账号的健康事件
本方案通过 EventBridge 跨账号事件转发机制,实现了类似 Organizational View 的集中监控能力,将多个账号的 Health Event 统一推送到飞书、钉钉、Teams、企业微信、Slack 等主流即时通讯工具。
二、方案架构
2.1 整体架构
[图 1]
方案采用 Hub-Spoke 模式:
- 集中通知账号(Hub):部署 EventBridge 自定义事件总线、EventBridge Rule(含 InputTransformer)和 Lambda 通知函数
- 推送账号(Spoke):部署 EventBridge 规则,将 Health Event 转发到集中账号
2.2 事件流程
[图 2]
完整流程:Amazon Health 产生事件 → 推送账号 EventBridge 规则匹配 → 跨账号转发到集中账号自定义事件总线 → InputTransformer 格式化消息 → 触发 Lambda → 自动识别平台并发送 Webhook 通知。
2.3 设计亮点
- 集中管理:所有通知配置集中在一个账号,便于维护和审计
- 灵活扩展:新增账号只需部署一条 EventBridge 转发规则,无需修改通知逻辑,也可通过 StackSets 实现新账号创建时自动部署
- 多平台自适应:通过 Webhook URL 自动识别目标平台,适配对应消息格式
- 消息模板可配置:通过 EventBridge InputTransformer 定义消息模板,修改格式无需改动代码
- 安全可控:集中账号 EventBus 通过 Resource Policy 精确控制允许推送事件的账号或组织,防止未授权访问
- 无固定成本:Serverless 架构,无需预置实例或固定资源,按事件触发付费,成本低
三、技术实现
3.1 跨账号事件转发
推送账号在默认事件总线上创建规则,匹配 aws.health 事件并转发到集中账号的自定义事件总线:
集中账号通过 EventBus 资源策略控制访问,支持按账号 ID 或 Organization ID 授权。
3.2 InputTransformer 消息格式化
消息格式化在 EventBridge Rule 层面完成,Lambda 只负责发送。修改通知内容只需更新 CloudFormation 模板中的 Event Bridge Rule 的 InputTransformer:
3.3 多平台通知发送
Lambda 通过 Webhook URL 特征自动识别目标平台,构造对应格式发送:
支持的平台及消息格式:
| 平台 | URL 特征 | 数据格式 |
| 飞书 | feishu.cn / lark | msg_type: text |
| 钉钉 | dingtalk.com | msgtype: text |
| Teams | powerplatform.com / webhook.office.com | Adaptive Card |
| 企业微信 | qyapi.weixin.qq.com | msgtype: markdown |
| Slack | hooks.slack.com | text |
四、部署指南
4.1 前置准备
获取 Webhook 地址:在目标通讯平台创建机器人/Webhook 并记录 URL:
- 飞书 – 在群组中使用机器人
- 钉钉 – 自定义机器人接入
- Teams – Create incoming webhooks with Workflows
- 企业微信 – 消息推送
- Slack – Sending messages using incoming webhooks
准备 Lambda Layer 包
4.2 部署集中通知账号(Hub)
4.3 部署推送账号(Spoke)
在每个需要监控的亚马逊云科技账号中执行:
4.4 测试验证
五、通知效果展示
[图 3]
[图 4]
[图 5]
六、扩展方向
- 多 Webhook 支持:Lambda 环境变量配置多个 Webhook URL,同时推送到不同平台或群组
- 更多平台与通知方式扩展:方案基于 Webhook 通用协议,任何支持 Webhook 方式接收消息的平台均可作为通知接收端。对于关键事件,还可对接飞书加急消息等接口实现短信、电话通知,具体示例参见项目仓库中的飞书加急通知方案部分
- 事件过滤:在推送账号的 EventPattern 中添加服务、区域等过滤条件,按需推送
- 自定义消息模板:修改 EventBridge Rule 的 InputTemplate,调整通知内容和格式
- 通知审计:结合 CloudWatch Logs 对通知发送记录进行审计和追溯
- 通知来源和通知方式扩展:可以参考项目仓库中对重点资源通过飞书加急消息接口进行短信、电话通知的示例,通过扩展 lambda 对接其他平台。
成为付费用户可以阅读 亚马逊 所有资料
了解更多 →