我需要使用 SNS + Pagerduty 监控 Elasticache 复制组。 问题是 Elasticache 将所有事件发送到配置的 sns arn,而不区分它是 ElastiCache:SnapshotFailed 等严重事件还是 ElastiCache:CacheClusterParametersChanged 等普通事件。
我尝试将过滤策略附加到主题的订阅,不幸的是,过滤仅适用于包含 https://docs.aws.amazon.com/sns/latest/dg/message-filtering.html 中提到的“MessageAttributes”字段。所以它对我不起作用。
Elasticache发送的消息如下:
{
"Type" : "Notification",
"MessageId" : "93cc4ffe-bbd7-521e-8dd1-1c25d437dc1b",
"TopicArn" : "arn:aws:sns:eu-central-1:custid:redis-monitor-a",
"Message" : "{\"ElastiCache:SnapshotComplete\":\"redis-a-001\"}",
"Timestamp" : "2018-08-01T08:21:52.610Z",
"SignatureVersion" : "1",
"Signature" : "aaabbbccc",
"SigningCertURL" : "xxxbbbzzz",
"UnsubscribeURL" : "yyyzzzaaa"
}
最佳答案
对于那些像我一样来到这里的人来说,在 2023 年,现在可以过滤掉弹性疼痛事件
您现在可以设置订阅过滤器策略,使其过滤器策略范围为消息正文
,并且您可以将策略设置为如下所示
{
"ElastiCache:SnapshotComplete": [
{
"exists": false
}
]
}
这将过滤掉消息正文中包含“ElastiCache:SnapshotComplete”的所有事件
如果你使用 terraform,它是这样的
resource "aws_sns_topic_subscription" "sns_subscription" {
filter_policy = jsonencode({
"ElastiCache:SnapshotComplete" = [{ "exists" : false }]
})
filter_policy_scope = "MessageBody"
}
关于amazon-web-services - 如何过滤Elasticache发送的SNS消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51629189/