【问题标题】:AWS SNS Subscription Filter policy checking a key in Message Attributes does NOT exist - possible?AWS SNS 订阅过滤器策略检查消息属性中的键不存在 - 可能吗?
【发布时间】:2019-12-04 21:35:45
【问题描述】:

我们有两种类型的 SNS 消息传入:

1. MessageAttributes 为空,如下所示:

"MessageAttributes": {}

2. 有 MessageAttributes 像这样进来:

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

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

所以我尝试了这个政策:

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

我认为这意味着它只会传递不包含 MessageAttributes 中的 Generator 键的消息

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

AWS 订阅过滤器文档似乎支持将此作为解决方案,但它们仅显示检查密钥是否存在的相反方式,因此我不确定它们是否支持检查密钥不存在:@987654321 @

这可能吗?

【问题讨论】:

  • 你发布的时候总是可以反转对方的逻辑。如果您还可以发布发布方法及其参数,这将很有帮助。

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


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    回复较晚,但可能对某人有所帮助。

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

    Note: You cannot use the exists operator to match messages in which an attribute does not exist. Filtering will NOT match any messages if you set [{"exists": false}].

    如果它不存在,你可以传递一个字符串'null'或类似于生成器属性吗?

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 2022-08-20
      • 2018-12-13
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      相关资源
      最近更新 更多