无法在同一云形式堆栈中使用Dead Letter队列创建FIFO队列



我有一个包含FIFO队列的云形式堆栈及其相关的死字母队列。以前,这不是FIFO队列,并且已经很好地部署了,而是首先提出了"死信"队列依赖性,然后是"源队列"。将其切换到FIFO后,它不再可行。我得到这个错误:

"Template error: SQSQueue https://sqs.us-east-1.amazonaws.com/1234/dev-assignments-dlq doesn't exist",

因此,似乎不再首先创建死字母队列。

 AWSTemplateFormatVersion: "2010-09-09"
    Resources:
      SourceQueue:
        Type: AWS::SQS::Queue
        Properties:
          FifoQueue: true
          QueueName: 'dev-push-notifications.fifo'
          RedrivePolicy:
            deadLetterTargetArn:
              Fn::GetAtt:
                - 'DeadLetterQueue'
                - 'Arn'
            maxReceiveCount: 5
          VisibilityTimeout: 30
      DeadLetterQueue:
        Type: AWS::SQS::Queue
        Properties:
          QueueName: 'dev-push-notifications-dlq'

事实证明,死字母队列必须与其源相同。

将云形式堆栈更改为此操作:

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  SourceQueue:
    Type: AWS::SQS::Queue
    Properties:
      FifoQueue: true
      QueueName: 'dev-push-notifications.fifo'
      RedrivePolicy:
        deadLetterTargetArn:
          Fn::GetAtt:
            - 'DeadLetterQueue'
            - 'Arn'
        maxReceiveCount: 5
      VisibilityTimeout: 30
  DeadLetterQueue:
    Type: AWS::SQS::Queue
    Properties:
      FifoQueue: true
      QueueName: 'dev-push-notifications-dlq.fifo'

这很奇怪,因为云形式应由于GetAtt而检测到依赖关系。您可以尝试使用DependsOn属性明确声明它:

AWSTemplateFormatVersion: "2010-09-09"
  Resources:
    SourceQueue:
      Type: AWS::SQS::Queue
      DependsOn: DeadLetterQueue
      Properties:
        # ...

最新更新