terraform中的动态地图创建

terraform中的动态地图创建,terraform,terraform0.12+,Terraform,Terraform0.12+,我有一个作为变量传递的映射 dummy = { 1 = { instances = { "ip1" = { a = "earth" b = "hi" c = 1 } "ip2" = { a = "world" b = "hello" c = 2 } "ip3" = { a = "planet" b

我有一个作为变量传递的映射

dummy = {
  1 = {
    instances = {
      "ip1" = {
        a = "earth"
        b = "hi"
        c = 1
      }
      "ip2" = {
        a = "world"
        b = "hello"
        c = 2
      }
      "ip3" = {
        a = "planet"
        b = "hey"
        c = 3
      }
    }
  }
}
现在我想按如下方式构造一张地图

value = {
  "ip1" = {
    b = "hi"
    c = 1
  }
  "ip2" = {
    b = "hello"
    c = 2
  }
  "ip3" = {
    b = "hey"
    c = 3
  }
}
我尝试使用for循环,但似乎没有任何效果 以下是我从那以后所做的尝试

_meta = {
  for instance in var.dummy.1.instances:
    (instance.key) = {
      b = instance.value.b
      c = instance.value.c
    }
}
但是它说我不能使用for变量访问密钥

_meta = {
  for key, instance in var.dummy.1.instances:
    key => {
      b = instance.b
      c = instance.c
    }
}
for表达式和for_表达式有点不同。for表达式中没有变量,您可以使用键,map中的值作为表达式形式,从映射中显式地提取整个条目,如上所示


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

(instance.key)
应该是
instance.key
。修复后会发生什么错误?@MattSchuchard error:test.tf行12上的“for”表达式无效,在资源“Consour_keys”应用程序中:10:11:12:instance.key={13:14:15:16:在构建对象时需要键表达式。错误:test.tf行12上的“for”表达式无效,在资源“Consour_keys”应用程序中:10:11:12:instance.key={for'表达式结尾后的额外字符。由于这是一个嵌套映射,您还需要将外部表达式括在
{}
中,因此
{instance.key=…}}