首页 > 解决方案 > 无法在同一 cloudformation 堆栈中创建具有死信队列的 FIFO 队列

问题描述

我有一个包含 FIFO 队列及其相关死信队列的 cloudformation 堆栈。以前这不是 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'

标签: amazon-web-servicesamazon-cloudformationamazon-sqs

解决方案


事实证明,死信队列必须与其源的类型相同。

将 cloudformation 堆栈更改为此有效:

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'

推荐阅读