如何通过EventBridge和SNS自定义发送至Slack的消息?
可以通过EventBridge Input Transformer实现自定义Slack消息格式
无需额外部署Lambda,直接利用EventBridge的Input Transformer就能将CloudWatch告警、AWS Config规则等源事件转换为Slack友好的自定义格式,核心是将源事件字段映射到Slack机器人支持的JSON消息结构中。
配置要点
在EventBridge规则的目标配置中,选择SNS主题后展开「输入转换器」,分两部分配置:
- 输入路径:用JSONPath提取源事件中需要的字段
- 输入模板:编写Slack兼容的JSON格式,用
<变量名>引用输入路径提取的字段
示例模板
场景1:CloudWatch告警转换为Slack通知
输入路径
{ "alarmName": "$.detail.alarmName", "alarmDescription": "$.detail.alarmDescription", "newStateValue": "$.detail.state.value", "newStateReason": "$.detail.state.reason", "alarmArn": "$.detail.alarmArn" }
输入模板
{ "text": "*AWS CloudWatch 告警通知*\n> 告警名称: <alarmName>\n> 告警状态: *<newStateValue>*\n> 告警描述: <alarmDescription>\n> 触发原因: <newStateReason>\n> 告警ARN: <alarmArn>" }
该模板生成带Markdown格式的文本消息,Slack会自动解析加粗、引用样式。
场景2:AWS Config规则合规状态变更通知
输入路径
{ "ruleName": "$.detail.ruleName", "complianceType": "$.detail.newEvaluationResult.complianceType", "resourceType": "$.detail.resourceType", "resourceId": "$.detail.resourceId", "annotation": "$.detail.newEvaluationResult.annotation" }
输入模板
{ "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*AWS Config 合规状态变更*\n> 规则名称: <ruleName>\n> 资源类型: <resourceType>\n> 资源ID: <resourceId>\n> 合规状态: *<complianceType>*" } }, { "type": "divider" }, { "type": "section", "text": { "type": "mrkdwn", "text": "备注: <annotation>" } } ] }
此模板使用Slack的Blocks组件生成结构化消息,包含分隔线、分段展示,视觉效果更清晰。
注意事项
- 确保Slack机器人集成允许接收JSON格式的消息 payload
- 输入模板中的变量名需与输入路径的键完全匹配(大小写敏感)
- 可通过EventBridge的「测试事件」功能模拟源事件,验证转换后的格式是否符合预期
内容的提问来源于stack exchange,提问作者howsmydriving42
相关产品推荐
相关产品推荐

