Terraform-provider-aws: По ΠΏΠ»Π°Π½Ρƒ redrive_policy всСгда помСчаСтся ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 июл. 2017  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: hashicorp/terraform-provider-aws

_Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° @kfrn ΠΊΠ°ΠΊ hashicorp / terraform # 15579. Он Π±Ρ‹Π» пСрСнСсСн сюда Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ раздСлСния ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² . ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½ΠΈΠΆΠ΅.


ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ terraform plan , ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ извлСчСния для ΠΌΠΎΠΈΡ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ SQS ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅, хотя Π½Π° самом Π΄Π΅Π»Π΅ Π² Π½ΠΈΡ… Π½Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для создания ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ SQS.

resource "aws_sqs_queue" "sqs_queue" {
  name                       = "${var.environment}_${var.name}"
  message_retention_seconds  = "${var.sqs_queue["message_retention_seconds"]}"
  visibility_timeout_seconds = "${var.sqs_queue["visibility_timeout_seconds"]}"

  redrive_policy = <<-JSON
    {
      "deadLetterTargetArn": "${aws_sqs_queue.sqs_dead_queue.arn}",
      "maxReceiveCount": "${var.sqs_queue["max_receive_count"]}"
    }
  JSON
}

resource "aws_sqs_queue" "sqs_dead_queue" {
  name                       = "${var.environment}_${var.name}_dead"
  message_retention_seconds  = "${var.sqs_dead_queue["message_retention_seconds"]}"
  visibility_timeout_seconds = "${var.sqs_dead_queue["visibility_timeout_seconds"]}"
}

maxReceiveCount устанавливаСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… модуля:

variable "sqs_queue" {
  type = "map"

  default = {
    message_retention_seconds  = 1209600
    visibility_timeout_seconds = 30
    max_receive_count          = 10
  }
}

ВСрсия Terraform

Terraform v0.9.8

ОТидаСмоС повСдСниС

Π§Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ извлСчСния Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ внСсСны.

ЀактичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

screen shot 2017-07-18 at 4 39 38 pm

ДСйствия ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅ шаги, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для воспроизвСдСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  1. terraform get
  2. terraform plan -var-file=<var-file>.tfvars -out=<my-update>.plan -state=<current-state-file>.tfstate
  3. terraform apply -state-out=<new-state-file>.tfstate <my-update>.plan

использованная Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»Π°ΡΡŒ Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2016 Π³ΠΎΠ΄Π° здСсь: hashicorp / terraform # 5119
ΠŸΠΎΡ…ΠΎΠΆΠ΅, это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ maxReceiveCount Π² ΠΊΠΎΠ΄Π΅ этого Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π±Ρ‹Π»Π° строкой, Π° Π½Π΅ числом; Π·Π°Ρ‚Π΅ΠΌ ошибка Π±Ρ‹Π»Π° исправлСна ​​(# 5888).
Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это со ΠΌΠ½ΠΎΠΉ происходит. Для записи, ΠΌΠΎΠΉ maxReceiveCount ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@kfrn Ρ‚Ρ‹

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ "${var.sqs_queue["max_receive_count"]}" . ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ heredoc JSON ΡΠ²Π»ΡΡŽΡ‚ΡΡ посторонними ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Terraform для получСния интСрполяции ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² этом случаС, поэтому ваш JSON ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

redrive_policy = <<-JSON
    {
      "deadLetterTargetArn": "${aws_sqs_queue.sqs_dead_queue.arn}",
      "maxReceiveCount": ${var.sqs_queue["max_receive_count"]}
    }
  JSON

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@kfrn Ρ‚Ρ‹

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ "${var.sqs_queue["max_receive_count"]}" . ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ heredoc JSON ΡΠ²Π»ΡΡŽΡ‚ΡΡ посторонними ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Terraform для получСния интСрполяции ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² этом случаС, поэтому ваш JSON ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

redrive_policy = <<-JSON
    {
      "deadLetterTargetArn": "${aws_sqs_queue.sqs_dead_queue.arn}",
      "maxReceiveCount": ${var.sqs_queue["max_receive_count"]}
    }
  JSON

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ·-Π·Π° отсутствия ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹ΡˆΠ΅.

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ этого.
Π― столкнулся с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ посторонних ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ${var.sqs_queue["max_receive_count"] устранило ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

спасибо @bflad

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

blaltarriba picture blaltarriba  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

EmmN picture EmmN  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

andywirv picture andywirv  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

hashibot picture hashibot  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

reedloden picture reedloden  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ