我们收到两种类型的SNS消息:
1。的MessageAttributes为空,如下所示:
"MessageAttributes": {}
2。具有这样的MessageAttributes:
"MessageAttributes": {
"Generator": {
"Type": "String",
"Value": "some-service"
}
}
我想使用一个过滤器订阅策略,该策略将忽略第二种类型,但将第一种类型传递给订阅者。
所以我尝试了此政策:
{
"Generator": [
{
"exists": false
}
]
}
我认为这将只会传递Generator
中不包含MessageAttributes
键的消息
但是我现在看到没有消息传递。
AWS Subscription Filter文档似乎支持此解决方案,但它们仅显示了检查密钥是否存在的相反方法,因此我不确定它们是否支持检查密钥是否存在:{{ 3}}
这可能吗?
答案 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
}
]
}