我有一个使用此过滤器的SNS订阅(SQS)过滤器:

{“ source”:[{“ not-but”:“ SOME_STRING”}]}

这项工作正常,除了有时我有去往SNS的消息没有被称为source的任何消息属性,并且在使用过滤器之前,没有过​​滤器的预订已将其接收。

因此,总而言之,我想找到一种方法,让我的过滤器在不具有此“源”属性的情况下接收消息,或者如果它具有此属性,则应为除SOME_STRING之外的任何内容。

谢谢!

最佳答案

您的要求是在以下情况下过滤并传递消息:


来源属性缺失
source属性存在,并且应该是任何东西-除了SOME_STRING。


Amazon SNS订阅策略在以下情况下接受消息。


1)过滤策略中的每个属性名称都与分配给消息的属性名称匹配。

2)对于每个匹配的属性名称,之间至少存在一个匹配项
下列:

->过滤策略中属性名称的值

->消息属性


如您在给定的documentation中的SNS订阅过滤器策略中所见,任何不包含过滤属性的消息,或者如果该属性值不符合该策略,则该消息将被拒绝。

根据您的示例,您不能过滤和传递不包含“源”属性的消息。但是您可以过滤source属性是否存在,并且应该为除SOME_STRING之外的任何其他属性。

解决方法。

假设您有权访问消息生成源,那么在将其推送到SNS之前,请确保每个消息都包含属性“ source”。然后,您可以轻松地过滤掉是否存在任何内容-除了SOME_STRING。

07-24 09:39
查看更多