Terraform-provider-aws: Sesuai rencana, redrive_policy selalu ditandai sebagai diubah

Dibuat pada 18 Jul 2017  ·  3Komentar  ·  Sumber: hashicorp/terraform-provider-aws

_ Masalah ini awalnya dibuka oleh @kfrn sebagai hashicorp / terraform # 15579. Itu dipindahkan ke sini sebagai akibat dari pemisahan penyedia . Isi asli dari masalah ini ada di bawah._


Setiap kali saya menjalankan terraform plan , kebijakan redrive untuk antrean SQS saya muncul sebagai diubah, meskipun sebenarnya tidak ada perubahan.

Saya menggunakan modul untuk membuat antrian SQS saya.

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 diatur dalam variabel modul:

variable "sqs_queue" {
  type = "map"

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

Versi Terraform

Terraform v0.9.8

Perilaku yang Diharapkan

Bahwa tidak ada perubahan yang terdeteksi untuk kebijakan redrive, karena tidak ada perubahan yang dilakukan.

Perilaku Sebenarnya

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

Langkah-langkah untuk Mereproduksi

Sebutkan langkah-langkah yang diperlukan untuk mereproduksi masalah, misalnya:

  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

Referensi

Masalah ini telah dibahas pada Februari 2016, di sini: hashicorp / terraform # 5119
Tampaknya karena maxReceiveCount dalam kode orang itu adalah string, bukan angka; bug tersebut kemudian mendapatkan patch (# 5888).
Jadi saya benar-benar tidak yakin mengapa ini terjadi pada saya. Sebagai catatan, maxReceiveCount jelas merupakan bilangan bulat.

bug servicsqs

Komentar yang paling membantu

@ kfrn, apakah Anda mengetahui masalahnya di sini?

Dalam konfigurasi Anda di atas, Anda memiliki "${var.sqs_queue["max_receive_count"]}" . Kutipan di dalam heredoc JSON tidak relevan dan tidak diperlukan oleh konfigurasi Terraform untuk mengambil interpolasi variabel dalam kasus ini, sehingga JSON Anda dapat terlihat seperti:

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

Semua 3 komentar

@ kfrn, apakah Anda mengetahui masalahnya di sini?

Dalam konfigurasi Anda di atas, Anda memiliki "${var.sqs_queue["max_receive_count"]}" . Kutipan di dalam heredoc JSON tidak relevan dan tidak diperlukan oleh konfigurasi Terraform untuk mengambil interpolasi variabel dalam kasus ini, sehingga JSON Anda dapat terlihat seperti:

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

Penutupan karena kurangnya tanggapan dan solusi yang diusulkan di atas.

Hanya tindak lanjut dari ini.
Saya menghadapi masalah yang sama dan menghapus kutipan asing pada ${var.sqs_queue["max_receive_count"] memperbaiki masalah

terima kasih @bflad

Apakah halaman ini membantu?
0 / 5 - 0 peringkat