由于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 (将#修改为@)