代码之家  ›  专栏  ›  技术社区  ›  Reza

如何在terraform中使用动态键从集合中提取数据作为列表

  •  1
  • Reza  · 技术社区  · 5 年前

    我在terraform中设置了以下内容(从数据模块中提取)

    {
       key1 {
         id = "5"
         name = "A"
       },
       key2 {
         id = "6"
         name = "A"
       }
    }
    

    关键点是动态的,它将是动态的 n

    我怎样才能得到下面的结果?请注意它是字符串列表

    [
      "5",
      "6"
    ]
    

    我在下面试过,但上面写着 Unsupported attribute

    output "email_channels_keys" {
      value = var.emails.*.id
    }
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Matthew Schuchard    5 年前

    我们可以使用 for 要在上迭代的lambda表达式 map(object)) id object map :

    output "email_channels_keys" {
      value = [ for key, value in data.data_name.block_name.attribute : value.id ]
    }
    

    我们使用 list 列表 地图 string key ,以及 对象 临时lambda范围变量中的值 value 身份证件 使用 .id ( ["id"] 也是有效的语法,但按惯例 地图 值是通过 ["<key>"] 和对象值 .<key> email_channels_keys 在您的输出中。

    data 问题开头引用的特定数据的名称空间,您可能希望更新该名称空间 钥匙 和 用于更具体名称的变量。