如何在terraform中使用动态键从Set中提取数据作为List



我在下面设置了地形(从数据模块中提取)

{
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
}

我们可以使用forlambda表达式来迭代map(object)),并在每个map中提取objectid键的值:

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名称空间,并且您可能希望为更具体的名称更新keyvalue变量。

最新更新