I'm using a CloudFormation template to create a stack for SQS. I have one SQS queue set with a dependency to another SQS queue used as a DLQ. When I create the stack I get this error:
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.
How do I set a redrive policy to wait for DLQ to finish being created?
Here's the pertinent information from my template:
"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
}
}
},
Just to add, making a "Ref" to other queue doesn't work because dlqtargetArn expects a string.