我需要使用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"
}
答案 0 :(得分:0)
正如您正确指出的那样,SNS消息过滤基于消息属性起作用。
因此,基本上,如果Elasticache没有设置任何MessageAttributes,则无法进行消息过滤
剩下的唯一选择是阅读订户中的消息,然后忽略不需要的消息