首页 > 解决方案 > 可选元素的动态块

问题描述

我在变量上有动态块。

  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.

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

标签: terraform

解决方案


在这种情况下,您通常不希望分配一个listmap类型变量null来指定一个未定义的值。您可能希望使用空构造函数[]forlist{}for map。这将为您提供您想要的行为并促进干净的代码。

如果您真的想分配null给非stringnumber类型,那么您可以使用具有空合并模式的合并函数(某些语言为此提供运算符;例如?:在 JS 中):

for_each = coalesce(var.settings, [])

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


推荐阅读