_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 v0.9.8
Es wurde keine Änderung für die Redrive-Richtlinien festgestellt, da keine Änderung vorgenommen wurde.
Bitte listen Sie die Schritte auf, die zum Reproduzieren des Problems erforderlich sind, zum Beispiel:
terraform get
terraform plan -var-file=<var-file>.tfvars -out=<my-update>.plan -state=<current-state-file>.tfstate
terraform apply -state-out=<new-state-file>.tfstate <my-update>.plan
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.
@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
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: