检查消息属性中的键的AWS SNS订阅过滤器策略不存在-可以吗?

时间:2019-12-04 21:35:45

标签: amazon-web-services amazon-s3 publish-subscribe amazon-sns

我们收到两种类型的SNS消息:

1。的MessageAttributes为空,如下所示:

"MessageAttributes": {}

2。具有这样的MessageAttributes:

                "MessageAttributes": {
                    "Generator": {
                        "Type": "String",
                        "Value": "some-service"
                    }
                }

我想使用一个过滤器订阅策略,该策略将忽略第二种类型,但将第一种类型传递给订阅者。

所以我尝试了此政策:

{
  "Generator": [
    {
      "exists": false
    }
  ]
}

我认为这将只会传递Generator中不包含MessageAttributes键的消息

但是我现在看到没有消息传递。

AWS Subscription Filter文档似乎支持此解决方案,但它们仅显示了检查密钥是否存在的相反方法,因此我不确定它们是否支持检查密钥是否存在:{{ 3}}

这可能吗?

2 个答案:

答案 0 :(得分:0)

最新反应,但可能对某人有所帮助。

无法通过不存在进行过滤。参见https://docs.aws.amazon.com/sns/latest/dg/sns-subscription-filter-policies.html#attribute-key-matching

的底部

D - 2k

如果可能不存在,您可以传递字符串'null'或类似的generator属性?

答案 1 :(得分:0)

@David Adams 的回答已经过时。请参阅 Attribute key matching 文档。

<块引用>

使用 "exists": false 返回不包含指定属性的传入消息。

现在可以使用策略排除任何具有特定键的消息:

{ 
  "key": [
    {
      "exists": false
    }
  ]
 }