You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SNS订阅问题:StringValue为JSON负载时过滤规则失效

SQS订阅消息过滤异常:JSON格式Header属性导致符合规则的消息被拦截

问题场景

我们为SQS订阅配置了基于appId消息属性的过滤规则,仅接收appId属性值为Foo的消息。

可正常通过过滤的消息示例

{
  "appId": {
    "DataType": "String",
    "StringValue": "Foo"
  },
  "header": {
    "DataType": "String",
    "StringValue": "some string value"
  }
}

按照设计逻辑,过滤规则只应关注appId属性,修改其他属性不会影响过滤结果。但实际测试发现,当header属性值改为JSON格式的字符串负载后,原本符合appId规则的消息会被过滤规则拦截,无法投递到队列。

被错误拦截的消息示例

{
  "appId": {
    "DataType": "String",
    "StringValue": "Foo"
  },
  "header": {
    "DataType": "String",
    "StringValue": "{\"field\": \"value\"}"
  }
}

AWS CLI复现步骤

# 创建SNS主题
aws sns create-topic --name my-topic
# 创建SQS队列
aws sqs create-queue --queue-name my-queue
# 订阅主题并配置过滤策略
aws sns subscribe --topic-arn <topic-arn> --protocol sqs --notification-endpoint <queue-url> --attributes '{"FilterPolicy":"{\"appId\":[\"Foo\"]}"}'
# 此消息可正常投递到队列
aws sns publish --topic-arn <topic-arn> --message '{"appId":"Foo", "header":"some string value"}'
# 此消息符合过滤规则但被拦截,无法投递
aws sns publish --topic-arn <topic-arn> --message '{"appId":"Foo", "header":"{\"payloadVersion\":\"2\"}"}'

关键验证结论

移除订阅的过滤策略后,含有JSON负载的消息能够正常投递到队列,说明问题根源在于过滤规则与JSON格式的Header属性存在异常交互。

内容的提问来源于stack exchange,提问作者Daniel Teleginski Camargo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:32:50