过滤 cloudwatch 警报在 SNS 主题上发布的消息以接收电子邮件通知

Posted

技术标签:

【中文标题】过滤 cloudwatch 警报在 SNS 主题上发布的消息以接收电子邮件通知【英文标题】:Filter messages published by cloudwatch alarms on an SNS topic to receive email notifications 【发布时间】:2022-01-15 07:19:39 【问题描述】:

我们正在使用通过企业为不同项目共享的 SNS 主题,并且必须如此,但每个人都在 cloudwatch 警报中使用该 SNS 主题。我们会收到所有不需要的警报的电子邮件通知,我们只想收到警报的通知。

解决方案可能是在订阅上添加过滤器,但来自 cloudwatch 警报的消息没有任何我们可以放置过滤器的消息属性。任何人都可以提出问题的解决方案,或者让我知道是否有办法添加自定义消息属性,我们可以根据这些属性进行过滤。

【问题讨论】:

我建议使用 Cloudwatch 事件模式来触发通知,因为它允许您使用消息转换器来捕获消息的所有部分,看看这个:docs.aws.amazon.com/eventbridge/latest/userguide/… 【参考方案1】:

无法过滤来自 CloudWatch 的消息。我最近有同样的问题。为了过滤 SNS 主题中的消息,它必须具有适当的消息属性。

你可以这样做:

创建 Lambda 函数(授予它向 SNS 主题发送消息的权限) 指向您的 CloudWatch 警报以向 Lambda 函数发送警报 在您的 Lambda 函数中编写解析器,以识别消息应该是哪个项目 从 Lambda 函数将消息发布到 SNS 主题并添加可在 SNS 中用于过滤的消息属性

【讨论】:

嗨@Caldazar 有趣的提议,你能不能在某个地方给我提供一个很棒的示例实现,谢谢你的帮助真的很感激:) @AliRaza 实施将取决于您要使用的语言(以及您用于将 CloudWatch 事件发送到 Lambda 函数的源 - 无论是 AWS 服务、CloudWatch 警报、计划的 CloudWatch 事件),但总的来说,Cloudwatch 发送的内容将在 Lambda 处理程序的“事件”中,您可以从那里检查事件详细信息并进行适当的映射

以上是关于过滤 cloudwatch 警报在 SNS 主题上发布的消息以接收电子邮件通知的主要内容,如果未能解决你的问题,请参考以下文章

javascript CloudWatch到AWS Lambda到Slack Channel Alerts和Charts。通过SNS主题通过Lambda函数将CloudWatch警报发布到Slack通

Terraform:通知 SNS 的 CloudWatch 事件

AWS 为 Lambda 创建 Cloudformation 日志警报

Cloudwatch 突然上传到 s3 的警报

Cloudwatch 指标过滤器看到事件,但没有触发警报

AWS SNS - 推送 GCM 显示为从 Cloudwatch 发送但未在移动设备中接收