2

I can get the URL of an SQS queue by creating a Terraform Data Source like below,

data "aws_sqs_queue" "my-sqs-queue-name" {
  name = "my-sqs-queue-name"
}

and then by referring to it as,

QUEUE_URL = data.aws_sqs_queue.my-sqs-queue-name.url

How can I get the URL for the Dead Letter Queue created automatically with the above Queue?
I want something like the following. Is it even possible?

DEAD_LETTER_QUEUE_URL = data.aws_sqs_queue.my-sqs-queue-name.dead_letter_queue.url
Ishan Madhusanka
  • 641
  • 1
  • 11
  • 21

1 Answers1

3

Below is code to create a Dead letter queue and how to get SQS url using Terraform resource attributes and data source.

https://www.terraform.io/docs/providers/aws/r/sqs_queue.html https://www.terraform.io/docs/providers/aws/d/sqs_queue.html

resource "aws_sqs_queue" "example" {
  name   = "example"
  policy = data.aws_iam_policy_document.sqs-queue-policy.json
  redrive_policy            = jsonencode({
    deadLetterTargetArn = aws_sqs_queue.example_dlq.arn
    maxReceiveCount     = 5
  })
}

resource "aws_sqs_queue" "example_dlq" {
  name = "example-dlq"
}

data "aws_sqs_queue" "example_dlq {
  name = "example-dlq"
}

output "sqs_url_data_source" {
  value = data.aws_sqs_queue.example_dlq.url
}

output "sqs_url_resource_attribute" {
  value = aws_sqs_queue.example.example_dlq.id
}

Or

DEAD_LETTER_QUEUE_URL = aws_sqs_queue.example.example_dlq.id

DEAD_LETTER_QUEUE_URL = data.aws_sqs_queue.example_dlq.url
Piyush Sonigra
  • 1,423
  • 11
  • 10