&引用;“属性键不明确”;更新到terraform版本0.12.26后出错

&引用;“属性键不明确”;更新到terraform版本0.12.26后出错,terraform,terraform-provider-aws,terraform0.12+,Terraform,Terraform Provider Aws,Terraform0.12+,在terraform版本从0.11更新到0.12.26后,我看到地图中的查找和值列表出现错误 variable "foo" { type = map } foo = { x.y = "bar" } 我有一个映射“foo”作为变量类型(map),然后在映射中有一个键值对x.y=“bar”。在查找中,我试图将x.y的值读取为 lookup(var.foo, x.y) 有了这个,我就错了 Error: Ambiguous attribute ke

在terraform版本从0.11更新到0.12.26后,我看到地图中的查找和值列表出现错误

variable "foo" {
  type = map
}


foo = {
  x.y = "bar"
}
我有一个映射“foo”作为变量类型(map),然后在映射中有一个键值对x.y=“bar”。在查找中,我试图将x.y的值读取为

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.

有人能帮忙吗?

如果您想要一个包含点字符的映射键
,那么您必须将该键写在引号中,以便Terraform可以看到您想要生成一个包含点的字符串,而不是使用变量
x
y
属性的值:

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

同样,要访问该元素,需要引用索引表达式中的键,如
foo[“x.y”]
。您也可以潜在地使用
lookup(foo,“x.y”)
——仍然带有引号——但Terraform 0.12中不推荐使用这种方法,因为
foo[“x.y”]
已取代它作为从映射值访问元素的主要方式。

@Meet101这个答案是正确的,您应该接受它并对其进行投票。