我想在 AWS SNS 中创建一个订阅过滤策略,它可以同时过滤
MessageBody
和 MessageAttributes
。例如
{
"MessageAttributes" : {
"attr1": ["value"]
},
"MessageBody": {
"body1": ["this", "orthis", "andthis"]
}
}
因此,过滤器会检查
(attr1 == value) AND (body1 == this OR orthis OR andthis)
据我了解,只有通过设置
MessageBody
才能让订阅过滤器检查 MessageAttributes
或 FilterPolicyScope
。但我需要根据 MessageAttribute
和 MessageBody
属性的组合进行过滤。
这可能吗?如果可以,怎么办?
不,不幸的是,这本身是不可能的,但有一个解决方法。
FilterPolicyScope
设置为 MessageAttributes
或 MessageBody
,但不能设置为 两者。这意味着您无法直接创建在单个策略中检查消息属性和消息正文的过滤策略。
如果确实需要,请创建一个 Lambda 函数,手动检查消息属性和消息正文,并具有 2 个 SNS 主题 - 一个 Lambda 函数连接到的主题用于接收和过滤消息,另一个用于将过滤后的消息发布到您的最终版本消费者。