我有一个使用此过滤器的SNS订阅(SQS)过滤器:
{“源”:[{“除了”:“ SOME_STRING”}]}
这可以正常工作,除了有时我有去往SNS的消息没有称为消息源的任何消息属性,并且在使用过滤器之前,没有过滤器的预订已将其接收。
因此,总而言之,我想找到一种方法,让我的过滤器在不具有此“源”属性的情况下接收消息,或者如果它具有此属性,则应为除SOME_STRING外的任何内容。
谢谢!
答案 0 :(得分:1)
您的要求是在出现以下情况时过滤并传递消息
Amazon SNS订阅策略在以下条件下接受消息。
1)过滤策略中的每个属性名称都与分配给消息的属性名称匹配。
2)对于每个匹配的属性名称,之间至少存在一个匹配项 以下:
过滤策略中属性名称的-> 值
-> 邮件属性
如您在给定的documentation中看到的SNS订阅过滤器策略,任何不包含过滤属性的消息,或者如果该属性值不符合该策略,则该消息将被拒绝。
>根据您的示例,您不能过滤并传递不包含“ source”属性的消息。但是您可以过滤source属性是否存在,并且应该为除SOME_STRING之外的其他任何值。
此问题的解决方法。
假定您有权访问消息生成源,在将其推送到SNS之前,请确保每条消息都包含属性“ source”。然后,您可以轻松过滤出是否存在任何内容-除了SOME_STRING。