Terraform-provider-aws: Im Plan wird redrive_policy immer als geändert markiert

Erstellt am 18. Juli 2017  ·  3Kommentare  ·  Quelle: hashicorp/terraform-provider-aws

_Diese Ausgabe wurde ursprünglich von @kfrn als hashicorp / terraform # 15579 geöffnet. Es wurde hier aufgrund der Aufteilung des


Jedes Mal, wenn ich terraform plan ausführe, werden die Redrive-Richtlinien für meine SQS-Warteschlangen als geändert angezeigt, obwohl sie tatsächlich keine Änderungen aufweisen.

Ich verwende ein Modul, um meine SQS-Warteschlangen zu erstellen.

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 wird in den Modulvariablen festgelegt:

variable "sqs_queue" {
  type = "map"

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

Terraform-Version

Terraform v0.9.8

Erwartetes Verhalten

Es wurde keine Änderung für die Redrive-Richtlinien festgestellt, da keine Änderung vorgenommen wurde.

Tatsächliches Verhalten

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

Schritte zum Reproduzieren

Bitte listen Sie die Schritte auf, die zum Reproduzieren des Problems erforderlich sind, zum Beispiel:

  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

Verweise

Dieses Problem wurde im Februar 2016 hier diskutiert: hashicorp / terraform # 5119
Es scheint gewesen zu sein, weil das maxReceiveCount im Code dieser Person eine Zeichenfolge war, keine Zahl; Der Fehler hat dann einen Patch erhalten (# 5888).
Ich bin mir also nicht sicher, warum das bei mir passiert. Für die Aufzeichnung ist mein maxReceiveCount definitiv eine ganze Zahl.

bug servicsqs

Hilfreichster Kommentar

@kfrn hast du das Problem hier herausgefunden?

In Ihrer obigen Konfiguration haben Sie "${var.sqs_queue["max_receive_count"]}" . Die Anführungszeichen im JSON-Heredoc sind irrelevant und werden von der Terraform-Konfiguration nicht benötigt, um die Variableninterpolation in diesem Fall zu erfassen, sodass Ihr JSON folgendermaßen aussehen kann:

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

Alle 3 Kommentare

@kfrn hast du das Problem hier herausgefunden?

In Ihrer obigen Konfiguration haben Sie "${var.sqs_queue["max_receive_count"]}" . Die Anführungszeichen im JSON-Heredoc sind irrelevant und werden von der Terraform-Konfiguration nicht benötigt, um die Variableninterpolation in diesem Fall zu erfassen, sodass Ihr JSON folgendermaßen aussehen kann:

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

Schließung aufgrund mangelnder Reaktion und einer oben vorgeschlagenen Lösung.

Nur eine Fortsetzung davon.
Ich hatte das gleiche Problem und das Entfernen der überflüssigen Anführungszeichen auf ${var.sqs_queue["max_receive_count"] das Problem behoben

danke @bflad

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen