Terraform-provider-aws: No plano, redrive_policy é sempre marcado como modificado

Criado em 18 jul. 2017  ·  3Comentários  ·  Fonte: hashicorp/terraform-provider-aws

_Este problema foi originalmente aberto por @kfrn como hashicorp / terraform # 15579. Ele foi migrado aqui como resultado da divisão do


Sempre que executo terraform plan , as políticas de redrive para minhas filas SQS aparecem como modificadas, embora na verdade não tenham alterações.

Estou usando um módulo para criar minhas filas 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 é definido nas variáveis ​​do módulo:

variable "sqs_queue" {
  type = "map"

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

Versão Terraform

Terraform v0.9.8

Comportamento Esperado

Que nenhuma mudança seja detectada nas políticas de redrive, uma vez que nenhuma mudança foi feita.

Comportamento Real

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

Passos para reproduzir

Liste as etapas necessárias para reproduzir o problema, por exemplo:

  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

Referências

Este problema foi discutido em fevereiro de 2016, aqui: hashicorp / terraform # 5119
Parece que foi porque o maxReceiveCount no código daquela pessoa era uma string, não um número; o bug então obteve um patch (# 5888).
Portanto, não tenho certeza de por que isso está acontecendo comigo. Para registro, meu maxReceiveCount é definitivamente um número inteiro.

bug servicsqs

Comentários muito úteis

@kfrn você descobriu o problema aqui?

Em sua configuração acima, você tem "${var.sqs_queue["max_receive_count"]}" . As aspas dentro do heredoc JSON são estranhas e não são exigidas pela configuração do Terraform para pegar a interpolação de variável neste caso, então seu JSON pode ser semelhante a:

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

Todos 3 comentários

@kfrn você descobriu o problema aqui?

Em sua configuração acima, você tem "${var.sqs_queue["max_receive_count"]}" . As aspas dentro do heredoc JSON são estranhas e não são exigidas pela configuração do Terraform para pegar a interpolação de variável neste caso, então seu JSON pode ser semelhante a:

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

Encerrando por falta de resposta e uma solução proposta acima.

Apenas um acompanhamento sobre isso.
Eu estava enfrentando o mesmo problema e remover as citações estranhas em ${var.sqs_queue["max_receive_count"] corrigiu o problema

obrigado @bflad

Esta página foi útil?
0 / 5 - 0 avaliações