如何为AWS CloudWatch告警添加自定义参数并发送至SNS主题?
在CloudWatch告警通知中添加自定义参数并传递给ServiceNow的方案
直接通过CloudWatch控制台配置告警无法直接添加自定义参数,你可以通过Lambda函数作为中间处理层来实现需求,具体步骤如下:
- 调整架构流程:将原有的「CloudWatch告警 → SNS → ServiceNow」流程,修改为「CloudWatch告警 → Lambda → SNS → ServiceNow」(或Lambda直接调用ServiceNow API)
- 创建并配置Lambda函数:
- 设置触发源:可以选择将CloudWatch告警直接设置为Lambda的触发源,或者保持原有CloudWatch告警到SNS的配置,将SNS主题作为Lambda的触发源
- 编写Lambda处理逻辑:
- 解析传入的CloudWatch告警原始事件
- 追加你的自定义参数(固定值或从告警事件中提取动态值),示例处理后的消息结构:
{ "original_alert": <原始告警事件内容>, "custom_params": { "source":"machineName", "dataUrl": "someUrl" } } - 如果
machineName是动态值(比如触发告警的EC2实例名称),可以从告警事件的Trigger.Dimensions字段获取资源ID,再调用对应AWS服务API(如EC2的DescribeInstances)获取名称
- 配置Lambda权限:确保Lambda拥有发布消息到目标SNS主题的权限,如果需要调用其他AWS服务,还要添加对应IAM权限
- 验证流程:触发一次CloudWatch告警,检查ServiceNow收到的通知是否包含自定义参数
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

