Amazon web services CloudFormation SQS队列在创建的DLQ上重新驱动策略依赖项

Amazon web services CloudFormation SQS队列在创建的DLQ上重新驱动策略依赖项,amazon-web-services,amazon-sqs,amazon-cloudformation,Amazon Web Services,Amazon Sqs,Amazon Cloudformation,我正在使用CloudFormation模板为SQS创建一个堆栈。我有一个SQS队列集,它依赖于另一个用作DLQ的SQS队列。创建堆栈时,出现以下错误: Value {"deadLetterTargetArn":"arn:aws:sqs:eu-west-1:xxxxxxxxx:services-abc-dlq","maxReceiveCount":"10"} for parameter RedrivePolicy is invalid. Reason: Dead letter target doe

我正在使用CloudFormation模板为SQS创建一个堆栈。我有一个SQS队列集,它依赖于另一个用作DLQ的SQS队列。创建堆栈时,出现以下错误:

Value {"deadLetterTargetArn":"arn:aws:sqs:eu-west-1:xxxxxxxxx:services-abc-dlq","maxReceiveCount":"10"} for parameter RedrivePolicy is invalid. Reason: Dead letter target does not exist.
如何设置重新驱动策略以等待DLQ完成创建

以下是我的模板中的相关信息:

"Resources": {
    "queueservicesdlqevents": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "DelaySeconds": "0",
        "MaximumMessageSize": "262144",
        "MessageRetentionPeriod": "345600",
        "QueueName": "services-abc-dlq",
        "ReceiveMessageWaitTimeSeconds": "0",
        "VisibilityTimeout": "30"
      }
    },
    "queueservicesevents": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "DelaySeconds": "0",
        "MaximumMessageSize": "262144",
        "MessageRetentionPeriod": "345600",
        "QueueName": "services-abc-events",
        "ReceiveMessageWaitTimeSeconds": "20",
        "VisibilityTimeout": "30",
        "RedrivePolicy": {
          "deadLetterTargetArn" : "arn:aws:sqs:eu-west-1:xxxxxx:services-abc-dlq",
          "maxReceiveCount" : 10
        }
      }
    },
只需补充一点,对其他队列进行“Ref”不起作用,因为dlqtargetArn需要一个字符串

只需补充一点,对其他队列进行“Ref”不起作用,因为dlqtargetArn需要一个字符串

仅提供资源的(默认)值,但您可以通过以下方式获取资源其他属性的值:

"Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ]
也就是说,根据中的部分返回值,现有死信队列的ARN可通过以下方式获得:

"Fn::GetAtt" : [ "queueservicesdlqevents", "Arn" ]

从依赖资源引用实际ARN后,CloudFormation将确保首先创建依赖项,以便在创建
queueservicesevents
队列时死信目标
queueservicesdlqevents
已经存在。

简短语法
!GetAtt queueservicesdlqevents.Arn