我在下面设置了地形(从数据模块中提取)
{
key1 {
id = "5"
name = "A"
},
key2 {
id = "6"
name = "A"
}
}
键是动态的,它将是n
个键的个数,任何值。
我怎样才能得到下面的结果?请注意它是List of strings
[
"5",
"6"
]
我在下面试了一下,但它显示Unsupported attribute
output "email_channels_keys" {
value = var.emails.*.id
}
我们可以使用for
lambda表达式来迭代map(object))
,并在每个map
中提取object
中id
键的值:
output "email_channels_keys" {
value = [ for key, value in data.data_name.block_name.attribute : value.id ]
}
使用list
构造函数将该类型实例化为list
类型。然后对map
进行迭代,并将string
键存储在临时lambda作用域变量key
中,将object
值存储在临时lambda作用域变量value
中。然后,我们使用.id
的正常用法访问对象中id
键的值(["id"]
也是有效的语法,但通常使用["<key>"]
访问map
值,使用.<key>
语法访问对象值)。返回值在输出中分配给email_channels_keys
。
请注意,对于您的特定用例,您将需要为您在问题开头引用的特定数据更新data
名称空间,并且您可能希望为更具体的名称更新key
和value
变量。