【问题标题】:Dynamic block for optional elements可选元素的动态块
【发布时间】:2021-11-26 21:37:07
【问题描述】:

我在一个变量上有动态块。

  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 时动态生成块。我怎样才能最好地解决这个问题?

【问题讨论】:

    标签: terraform


    【解决方案1】:

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

    如果您真的想将null 分配给非stringnumber 类型,那么您可以将coalesce function 与空合并模式一起使用(某些语言为此提供了运算符;例如?: in JS):

    for_each = coalesce(var.settings, [])
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多