微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由于SNS主题订阅导致的AWS Cloudformation模板部署失败已具有不同的属性

如何解决由于SNS主题订阅导致的AWS Cloudformation模板部署失败已具有不同的属性

我有定义以下内容的AWS CloudFormation模板:

主题有3个订阅者,所有订阅者均为AWS SQS队列。

以下是serverless.yml的摘录:

provider:
  stage: ${opt:stage,'staging'}
custom:
  prefix: ${self:provider.stage}-email
  resources:
      deletionPolicy:
        local: Delete
        staging: Delete
        prod: Retain

EmailSnsTopic:
      DeletionPolicy: ${self:custom.resources.sns.deletionPolicy.${self:provider.stage}}
      Type: AWS::SNS::Topic
      Properties:
        TopicName: ${self:custom.prefix}-EmailSnsTopic
        displayName: "EmailSnsTopic Data ingestion pipeline"

SQS队列及其对该主题订阅

EmailQueue:
  Type: AWS::SQS::Queue
  DeletionPolicy: ${self:custom.resources.sqs.deletionPolicy.${self:provider.stage}}
  Properties:
    QueueName: ${self:custom.sqs.EmailQueueName}
    MessageRetentionPeriod: 1209600
    VisibilityTimeout: ${self:custom.sqs.MESSAGE_VISIBILITY_TIMEOUT}
    ReceiveMessageWaitTimeSeconds: ${self:custom.sqs.RECEIVE_MESSAGE_WAIT_TIME}
    RedrivePolicy:
      deadLetterTargetArn: 
        Fn::GetAtt:
        - EmailDLQ
        - Arn
      maxReceiveCount: ${self:custom.sqs.MAX_RETRY}

EmailSnsSubscription:
      UpdateReplacePolicy: Retain
      DeletionPolicy: ${self:custom.resources.sns.deletionPolicy.${self:provider.stage}}
      Type: AWS::SNS::Subscription
      Properties:
        Protocol: sqs
        Endpoint:
          Fn::GetAtt:
            - EmailQueue
            - Arn
        FilterPolicy:
          action: [{anything-but: sendSmsOnly}]
        RawMessageDelivery: false
        TopicArn: arn:aws:sns:${self:provider.region}:${self.account}:${self:provider.stage}-EmailSnsTopic

我有2个环境:生产和暂存。暂存环境中的部署运行良好,没有任何错误。但是生产环境中的部署会生成以下错误消息:

无服务器:正在检查堆栈更新进度... CloudFormation-UPDATE_IN_PROGRESS-AWS :: CloudFormation :: Stack-电子邮件产品 CloudFormation-CREATE_IN_PROGRESS-AWS :: SNS :: Subscription-EmailSnsSubscription

CloudFormation-CREATE_Failed-AWS :: SNS :: Subscription-EmailSnsSubscription ... ... CloudFormation-UPDATE_ROLLBACK_COMPLETE-AWS :: CloudFormation :: Stack-电子邮件产品 无服务器:操作失败!

无服务器错误---------------------------------------

发生错误:EmailSnsSubscription-无效参数:属性原因:订阅已存在且具有不同属性(服务:AmazonSNS;状态代码:400;错误代码:InvalidParameter;请求ID:xxx-xxxx-xxxxx;代理服务器:null)。

我很困惑,因为它只能在暂存环境中工作,而不能在生产环境中工作。

问题的可能根本原因是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。