SNS过滤所有内容-但不接受空白邮件属性

时间:2018-10-24 02:23:49

标签: amazon-web-services amazon-sqs amazon-sns

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

{“源”:[{“除了”:“ SOME_STRING”}]}

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

  1. 缺少源属性
  2. source属性存在,并且应该是除SOME_STRING之外的任何内容。

Amazon SNS订阅策略在以下条件下接受消息。

  

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

     

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

     过滤策略中属性名称的

->

     

-> 邮件属性

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

>

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

此问题的解决方法

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