如何为使用Terraform生成的SQS队列获取死信队列的URL?

如何为使用Terraform生成的SQS队列获取死信队列的URL?,terraform,amazon-sqs,terraform-provider-aws,dead-letter,Terraform,Amazon Sqs,Terraform Provider Aws,Dead Letter,我可以通过创建如下所示的Terraform数据源来获取SQS队列的URL data "aws_sqs_queue" "my-sqs-queue-name" { name = "my-sqs-queue-name" } 然后把它称为 QUEUE_URL = data.aws_sqs_queue.my-sqs-queue-name.url 如何获取使用上述队列自动创建的死信队列的URL? 我想要下面这样的东西。有可能吗 DEAD_LETTER_QUEUE_URL = data.aws_sqs

我可以通过创建如下所示的Terraform数据源来获取SQS队列的URL

data "aws_sqs_queue" "my-sqs-queue-name" {
  name = "my-sqs-queue-name"
}
然后把它称为

QUEUE_URL = data.aws_sqs_queue.my-sqs-queue-name.url
如何获取使用上述队列自动创建的死信队列的URL?
我想要下面这样的东西。有可能吗

DEAD_LETTER_QUEUE_URL = data.aws_sqs_queue.my-sqs-queue-name.dead_letter_queue.url

显然,您可以引用SQS队列URL,它是死信队列URL 使用模块实例,如下所示

module.sqs.sqs_url["my-sqs-queue-name"];
module.sqs.dlq_sqs_url["my-sqs-queue-name"];

下面是创建死信队列的代码,以及如何使用Terraform资源属性和数据源获取SQS url


它不是数据源的导出属性,因此可能不是。谢谢@马特舒查德。有意义这完全取决于你的模块,考虑到你的问题或答案中没有模块源代码,这对其他任何人都没有用处。您应该考虑将模块源添加到您的问题(可能是它的最佳位置),并询问在相同的<代码> TrRAFFRAPH < /COD>中创建死信队列时,如何访问死信队列URL,作为需要访问队列URL的东西。作为参考,在这种特定情况下,您不需要数据源,应该始终使用模块的输出。
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