可选元素的动态块

  • 本文关键字:动态 元素 terraform
  • 更新时间 :
  • 英文 :


我在变量上设置了动态块。

dynamic "settings" {
for_each = var.settings
content {
id      = lookup(settings.value, "id", null)
...
}
}

但是从调用模块来看,settings不一定总是存在,有时会直接传递null

settings = null

然而,当这种情况发生时,我在计划时得到跟踪。

var.settings is null
Cannot use a null value in for_each.

所以基本上,我只想在settings不是null时动态生成块。我怎样才能最好地解决这个问题?

在这种情况下,您通常不希望将listmap类型变量分配给null以指定未定义的值。您可能希望对list使用空构造函数[],而对map使用空构造函数{}。这将给你你想要的行为和促进干净的代码。

如果你真的想将null赋值给非stringnumber类型,那么你可以使用空合并模式的coalesce函数(一些语言提供了操作符;例如JS中的?:):

for_each = coalesce(var.settings, [])

,这会给你想要的行为。请注意,它基本上添加了另一层来使用空构造函数作为备份/默认值,这是在答案开头建议的最佳实践模式。

最新更新