是否可以创建 AWS SNS 订阅过滤器来检查“MessageAttributes”和“MessageBody”

问题描述 投票:0回答:1

我想在 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
属性的组合进行过滤。

这可能吗?如果可以,怎么办?

amazon-web-services amazon-sns
1个回答
0
投票

不,不幸的是,这本身是不可能的,但有一个解决方法。

SNS 目前仅允许您将

FilterPolicyScope
设置为
MessageAttributes
MessageBody
,但不能设置为 两者。这意味着您无法直接创建在单个策略中检查消息属性和消息正文的过滤策略。

如果确实需要,请创建一个 Lambda 函数,手动检查消息属性和消息正文,并具有 2 个 SNS 主题 - 一个 Lambda 函数连接到的主题用于接收和过滤消息,另一个用于将过滤后的消息发布到您的最终版本消费者。

© www.soinside.com 2019 - 2024. All rights reserved.