AWS SNS订阅突发FilterPolicyScope必填错误:未配置该参数却报错
AWS SNS 订阅突然要求必填 FilterPolicyScope 问题排查
之前配置AWS SNS订阅时,未设置FilterPolicyScope(根据官方文档该参数非必填,默认值为MessageAttributes),配置一直正常运行且未做任何变更,但现在部署时突然报错,提示该参数为必填项且值为null无效。
报错信息
An error occurred: DynamoConsumerSubscription - Invalid parameter: FilterPolicyScope: Invalid value [null]. Please use either MessageBody or MessageAttributes (Service: AmazonSNS; Status Code: 400; Error Code: InvalidParameter; Request ID: d374f542-3f41-5626-a65f-a9cb71c4277b; Proxy: null).
当前订阅配置
Type: "AWS::SNS::Subscription" Properties: Endpoint: Fn::GetAtt: [DynamoWorkConsumerQueue, Arn] Protocol: sqs RawMessageDelivery: true TopicArn: !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${self:custom.config.DomainBusArnName}" FilterPolicy: "hyperloop.work.env": - "testing-event-management" ...
解决方法
- 显式声明FilterPolicyScope参数:直接在配置中添加
FilterPolicyScope并设置为官方默认值MessageAttributes,覆盖后端校验的null值问题。修改后的配置如下:
Type: "AWS::SNS::Subscription" Properties: Endpoint: Fn::GetAtt: [DynamoWorkConsumerQueue, Arn] Protocol: sqs RawMessageDelivery: true TopicArn: !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${self:custom.config.DomainBusArnName}" FilterPolicy: "hyperloop.work.env": - "testing-event-management" ... FilterPolicyScope: MessageAttributes
检查部署工具版本:如果使用Serverless Framework、SAM等工具部署,可能工具版本更新后对SNS资源的参数处理逻辑发生变化,导致原本的隐性默认值不再生效。可以尝试回退工具版本验证,或保持工具最新并显式配置参数。
适配AWS后端校验变更:AWS可能调整了SNS订阅的参数校验逻辑,当存在
FilterPolicy时要求必须显式指定FilterPolicyScope。显式配置参数即可绕过该校验错误。
内容的提问来源于stack exchange,提问作者jupiterjelly
相关产品推荐
相关产品推荐

