Terraform 中的动态地图创建

Kau*_*mar 2 terraform terraform0.12+

我有一个作为变量传递的地图

dummy = {
  1 = {
    instances = {
      "ip1" = {
        a = "earth"
        b = "hi"
        c = 1
      }
      "ip2" = {
        a = "world"
        b = "hello"
        c = 2
      }
      "ip3" = {
        a = "planet"
        b = "hey"
        c = 3
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想构建一个地图,如下所示

value = {
  "ip1" = {
    b = "hi"
    c = 1
  }
  "ip2" = {
    b = "hello"
    c = 2
  }
  "ip3" = {
    b = "hey"
    c = 3
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 for 循环,但似乎没有任何结果 以下是我自此以来尝试过的

_meta = {
  for instance in var.dummy.1.instances:
    (instance.key) = {
      b = instance.value.b
      c = instance.value.c
    }
}
Run Code Online (Sandbox Code Playgroud)

但它说我无法使用迭代变量访问密钥

Ala*_*Dea 5

_meta = {
  for key, instance in var.dummy.1.instances:
    key => {
      b = instance.b
      c = instance.c
    }
}
Run Code Online (Sandbox Code Playgroud)

for 表达式与 for_each 略有不同。您不会在 for 表达式中获取变量,并且可以显式地从映射中提取整个条目,如上面所示,使用映射中的键、值作为表达式形式。

您还需要=>在生成的映射条目的键和值之间使用粗箭头运算符。