Как получить URL для очереди недоставленных сообщений для очереди SQS, созданной с помощью Terraform? - PullRequest
0 голосов
/ 26 марта 2020

Я могу получить URL-адрес очереди SQS, создав источник данных Terraform, как показано ниже,

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

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Ниже приведен код для создания очереди недоставленных сообщений и получения URL SQS с использованием атрибутов ресурса Terraform и источника данных.

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
0 голосов
/ 26 марта 2020

Очевидно, что вы можете ссылаться на URL-адрес очереди SQS и ее URL-адрес очереди недоставленных сообщений, используя экземпляр модуля, как показано ниже

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