Terraform-provider-aws: En el plan, redrive_policy siempre se marca como modificado

Creado en 18 jul. 2017  ·  3Comentarios  ·  Fuente: hashicorp/terraform-provider-aws

_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
  }
}

Versión Terraform

Terraform v0.9.8

Comportamiento esperado

Que no se detecte ningún cambio para las políticas de redrive, ya que no se ha realizado ningún cambio.

Comportamiento real

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

Pasos para reproducir

Enumere los pasos necesarios para reproducir el problema, por ejemplo:

  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

Referencias

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.

bug servicsqs

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í:

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

Todos 3 comentarios

@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

¿Fue útil esta página
0 / 5 - 0 calificaciones