Ключ for_each - не ярлык. Это половина адреса ресурса, terraform_data.queue["prod-orders"], и состояние хранит объект именно под этим адресом. Поменяйте ключ, и план не увидит переименования. Он увидит один объект на удаление и другой на создание.
Поэтому я нервничаю, когда ключи получаются из выражения.
locals {
queues = { for q in var.queues : "${q.env}-${q.name}" => q }
}
resource "terraform_data" "queue" {
for_each = local.queues
input = each.value
}
Выглядит безобидно. Потом кто-то решает, что имя лучше ставить первым, правит одну строку в locals, и дифф на ревью длиной в одну строку. Замена всех экземпляров видна в плане, а план как раз пролистывают. Я предпочитаю ключи, выписанные в файле, или взятые напрямую из одного поля, которое не меняется, а всю хитрую перестройку держать в значениях.
