AWS SNS 订阅中出现意外的“FilterPolicyScope”要求 - 无服务器无效参数,但参数不存在

问题描述 投票:0回答:2

我有一个 SNS FilterPolicy,根据 AWS 文档,不需要 filterPolicyScope。如果未设置,则默认为 MessageAttributes,它说。这就是我很长一段时间没有问题的情况,但现在它是一个问题,即使我没有做出任何改变。现在我收到此错误,表明需要 FilterPolicyScope。但我不明白为什么。

发生错误:DynamoConsumerSubscription - 无效参数:FilterPolicyScope:无效值 [null]。请使用 MessageBody 或 MessageAttributes(服务:AmazonSNS;状态代码:400;错误代码:InvalidParameter;请求 ID:d374f542-3f41-5626-a65f-a9cb71c4277b;代理: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" ...```
amazon-web-services aws-cloudformation serverless serverless-framework amazon-sns
2个回答
1
投票

这已作为错误提出并提升至 P2 - 3 月 27 日报告,但仍开放

解决方法(来自评论):

作为解决方法,我们只是注释掉 sns 订阅资源(以便可以删除它),然后使用正确的订阅和过滤器重新部署以重新创建它。如上面建议的那样避免堆栈删除。


0
投票

当我遇到这些怪癖时,我会浏览一下 AWS 文档,看看是否有某些内容已在某处更新(例如 CDK 或 API 文档),而在 CloudFormation 文档中未更新。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-subscription-filterpolicy又名CloudFormation似乎确实说这不是必需的,并且有是默认值。

https://docs.aws.amazon.com/sns/latest/dg/message-filtering-apply.html#message-filtering-apply-cli 又名 CLI 似乎需要它,即使 CF 有默认值.

https://docs.aws.amazon.com/sns/latest/dg/message-filtering-apply.html#message-filtering-apply-sdks又名SDK似乎不需要它

https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html API 似乎不需要它,因为它还有 MessageAttributes 的“默认”值。

https://github.com/aws-samples/aws-sns-samples/blob/master/templates/SNS-Subscription-Attributes-Tutorial-CloudFormation.template 是一个示例 CF 模板,它设置 FilterPolicy 但不设置 FilterPolicyScope

我不知道出了什么问题。我猜这是一个错误。

© www.soinside.com 2019 - 2024. All rights reserved.