_Esta edición fue originalmente abierta por @kfrn como hashicorp / terraform # 15579. Se migró aquí como resultado de la división del proveedor . El cuerpo original del problema se encuentra a continuación.
Cada vez que ejecuto terraform plan
, las políticas de redrive para mis colas SQS aparecen como modificadas, aunque en realidad no tienen cambios.
Estoy usando un módulo para crear mis colas 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
se establece en las variables del módulo:
variable "sqs_queue" {
type = "map"
default = {
message_retention_seconds = 1209600
visibility_timeout_seconds = 30
max_receive_count = 10
}
}
Terraform v0.9.8
Que no se detecte ningún cambio para las políticas de redrive, ya que no se ha realizado ningún cambio.
Enumere los pasos necesarios para reproducir el problema, por ejemplo:
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
Este problema se discutió en febrero de 2016, aquí: hashicorp / terraform # 5119
Parece haber sido porque el maxReceiveCount
en el código de esa persona era una cadena, no un número; el error luego obtuvo un parche (# 5888).
Así que no estoy seguro de por qué me está pasando esto. Para que conste, mi maxReceiveCount
es definitivamente un número entero.
@kfrn, ¿
En su configuración anterior, tiene "${var.sqs_queue["max_receive_count"]}"
. Las comillas dentro del JSON heredoc son extrañas y no son requeridas por la configuración de Terraform para recoger la interpolación de variables en este caso, por lo que su JSON puede verse así:
redrive_policy = <<-JSON
{
"deadLetterTargetArn": "${aws_sqs_queue.sqs_dead_queue.arn}",
"maxReceiveCount": ${var.sqs_queue["max_receive_count"]}
}
JSON
Cierre por falta de respuesta y propuesta de solución arriba.
Solo un seguimiento de esto.
Estaba enfrentando el mismo problema y eliminando las comillas extrañas en ${var.sqs_queue["max_receive_count"]
solucionó el problema
gracias @bflad
Comentario más útil
@kfrn, ¿
En su configuración anterior, tiene
"${var.sqs_queue["max_receive_count"]}"
. Las comillas dentro del JSON heredoc son extrañas y no son requeridas por la configuración de Terraform para recoger la interpolación de variables en este caso, por lo que su JSON puede verse así: