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

AWS SNS主题订阅过滤策略配置咨询:基于action与sourceClientName的消息过滤规则

配置AWS SNS订阅过滤策略,实现SQS精准接收指定消息

Hey there! 作为AWS SNS新手,不用慌,这个过滤策略配置其实很直接,我帮你把需求转化成可直接用的配置方案,还会给你一步步的操作指引。

先明确需求对应的过滤逻辑

你需要SQS队列只接收两类消息:

  • 所有action字段值为Exception的消息(不管sourceClientName是A/B/C/D)
  • action为Success且sourceClientName不是D的消息

直接可用的过滤策略JSON

AWS SNS的过滤策略是基于JSON的,下面这个完全符合你的需求:

{
  "OR": [
    {
      "action": ["Exception"]
    },
    {
      "AND": [
        {
          "action": ["Success"]
        },
        {
          "sourceClientName": { "anything-but": ["D"] }
        }
      ]
    }
  ]
}

简单解释下这个策略:

  • 外层用OR逻辑,只要满足两个分支中的任意一个,消息就会被推送到SQS
  • 第一个分支直接匹配action等于Exception的所有消息
  • 第二个分支用AND逻辑,同时满足两个条件:action是Success,且sourceClientName不是D(这里用anything-but操作符来排除指定值)

控制台配置步骤(适合新手)

  1. 登录AWS管理控制台,找到并进入SNS服务
  2. 定位到你要配置的主题,点击进入后切换到「订阅」标签页
  3. 找到关联目标SQS队列的那条订阅,点击右侧的「编辑」按钮
  4. 在弹出的编辑窗口中,找到「过滤策略」区域,把上面的JSON代码粘贴进去
  5. 点击「保存更改」就完成啦!

额外的实用提示

  • 测试验证:配置完成后,你可以发送几条测试消息来验证:
    • ✅ {"action": "Exception", "sourceClientName": "D"} 应该能被SQS接收
    • ✅ {"action": "Success", "sourceClientName": "A"} 应该能被SQS接收
    • ❌ {"action": "Success", "sourceClientName": "D"} 应该不会被推送
  • CLI配置方式(如果习惯用命令行):
    把下面的命令中的订阅ARN替换成你自己的,直接执行即可:
aws sns set-subscription-attributes \
  --subscription-arn "arn:aws:sns:us-east-1:123456789012:your-topic:abc123-xyz456" \
  --attribute-name FilterPolicy \
  --attribute-value '{"OR":[{"action":["Exception"]},{"AND":[{"action":["Success"]},{"sourceClientName":{"anything-but":["D"]}}]}]}'
  • 注意:确保你的消息是标准JSON格式,并且包含action和sourceClientName字段,否则过滤策略会判定为不匹配,消息不会被推送到SQS。

内容的提问来源于stack exchange,提问作者AmiDeveloper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:37:48