我有一个输出两个值的模块,key并且value. 该模块包含第三个值is_needed,它是一个布尔值。我可以多次运行该模块并获取输出图。有没有办法根据is_needed布尔值有条件地将值添加到地图?
例如,我可以创建一个包含所有值的地图,如下所示:
locals {
map_of_values = tomap({
for instance in module.my_module : instance.key => instance.value
})
}
Run Code Online (Sandbox Code Playgroud)
我可以创建仅包含部分值的地图吗?类似于这个伪代码:
locals {
map_of_needed_values = tomap({
for instance in module.my_module if is_needed: instance.key => instance.value
})
}
Run Code Online (Sandbox Code Playgroud)
是的。事实上,您的伪代码非常接近正确的语法。
locals {
map_of_needed_values = tomap({
for instance in module.my_module :
instance.key => instance.value if instance.is_needed
})
}
Run Code Online (Sandbox Code Playgroud)
这是完整的功能代码块,可帮助您了解其全部工作原理。我不完全确定你的module.my_module输出的结构,所以我猜测。
variable "my_module" {
default = {
"instance_1" = {
"key" = "hello"
"value" = "world"
"is_needed" = false
}
"instance_2" = {
"key" = "foo"
"value" = "bar"
"is_needed" = true
}
}
}
locals {
map_of_needed_values = tomap({
for instance in var.my_module :
instance.key => instance.value if instance.is_needed
})
}
output "map_of_needed_values" { value = local.map_of_needed_values }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |