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

AWS SNS筛选策略中Exists运算符对数组字段不生效问题排查

问题排查与解决方案

你的问题出在两个可能的方向:筛选策略的写法隐患或者消息格式不符合要求,以下是具体的排查和解决步骤:

  • 修正筛选策略的写法,避免转义错误
    你当前用字符串形式编写FilterPolicy,容易出现JSON转义或解析问题。推荐直接用YAML对象格式定义,CloudFormation会自动处理序列化,更可靠:

    ResultTopicToAlertSqs:
      Type: AWS::SNS::Subscription
      Properties:
        TopicArn: !Ref ResultTopic
        Endpoint: !GetAtt AlertsQueue.Arn
        Protocol: "sqs"
        RawMessageDelivery: true
        FilterPolicyScope: MessageBody
        FilterPolicy:
          results:
            - exists: true
    
  • 确保消息体是标准JSON格式
    因为你设置了FilterPolicyScope: MessageBody,SNS会解析消息体的JSON结构来应用筛选策略。如果发送的消息体不是合法JSON,或者results字段不是非空数组,都会导致筛选失败。
    测试时请发送如下格式的消息:

    {
      "results": ["test-item"]
    }
    
  • 验证数组字段的存在性判断逻辑
    SNS的exists: true对数组字段的判断规则是:字段必须存在,且数组包含至少一个元素(空数组[]会被判定为不符合条件)。确认你发送的消息中results确实是非空数组,而非null或空数组。

  • 逐步排查验证
    先移除FilterPolicy配置,确认消息能正常从SNS发送到SQS,再添加筛选策略,逐步缩小问题范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:20:47