繁体   English   中英

CloudFormation SQS队列Redrive策略依赖于创建的DLQ

[英]CloudFormation SQS Queue Redrive policy dependency on a DLQ created

我正在使用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需要一个字符串。

Ref仅提供AWS CloudFormation资源的(默认)值,但您可以通过Fn :: GetAtt获取资源的其他属性的值,如下所示:

"Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ]

也就是说,根据AWS :: SQS :: Queue中的 返回值部分,可以通过以下方式获取死信队列的ARN:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM