_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
}
}
Terraform v0.9.8
Que nenhuma mudança seja detectada nas políticas de redrive, uma vez que nenhuma mudança foi feita.
Liste as etapas necessárias para reproduzir o problema, por exemplo:
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 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.
@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
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: