Ошибка "неоднозначный ключ атрибута" после обновления до версии 0.12.26 terraform

После обновления версии terraform с 0.11 до 0.12.26 я вижу ошибку при поиске и списке значений внутри карты.

variable "foo" {
  type = map
}


foo = {
  x.y = "bar"
}

У меня есть карта "foo" как тип переменной (карта), а затем у меня есть пара "ключ-значение" в карте с xy = "bar". При поиске я пытаюсь прочитать значение xy как,

lookup(var.foo, x.y)

с этим я получаю ошибку,

Error: Ambiguous attribute key

  on line 13:
  13:   x.y = "bar"

If this expression is intended to be a reference, wrap it in parentheses. If
it's instead intended as a literal name containing periods, wrap it in quotes
to create a string literal.

может кто поможет?

1 ответ

Если вы хотите иметь ключ карты, содержащий символ точки . тогда вы должны написать ключ в кавычках, чтобы Terraform мог видеть, что вы собираетесь создать строку, содержащую точку, а не использовать значение y атрибут переменной x:

foo = {
  "x.y" = "bar"
}

Аналогичным образом, чтобы получить доступ к этому элементу, вам нужно заключить в кавычки ключ в выражении индекса, например foo["x.y"]. Вы также можете потенциально использоватьlookup(foo, "x.y") - все еще с кавычками - но этот подход устарел в Terraform 0.12, потому что foo["x.y"] заменил его как основной способ доступа к элементу из значения карты.

Другие вопросы по тегам