You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform动态块中如何根据传入参数动态决定content的可选字段

你可以直接借助 Terraform 原生的 null 值特性实现需求,无需编写两个不同的 content 块:当参数赋值为 null 时,Terraform 会自动忽略该参数,不会将其纳入最终生成的配置中。

正确实现代码

dynamic "settings" {
  for_each = var.settings
  content {
    name     = settings.value["name"]
    type     = settings.value["type"]
    id       = settings.value["id"]
    # 字段不存在时返回null,Terraform会自动忽略该参数
    template = lookup(settings.value, "template", null)
    design   = lookup(settings.value, "design", null)
  }
}

补充说明

  1. lookup 是 Terraform 内置的取值函数,会从第一个参数的 map 中取第二个参数指定的key的值,如果key不存在则返回第三个参数的默认值,这里我们将默认值设为 null 即可实现你的需求。
  2. 如果你使用 Terraform 0.14 及以上版本,也可以用 try 函数简化写法:
template = try(settings.value.template, null)
design = try(settings.value.design, null)
  1. 建议同步优化变量 settings 的类型定义,明确标注可选字段,避免类型校验报错:
variable "settings" {
  type = list(object({
    name     = string
    type     = string
    id       = string
    template = optional(string)
    design   = optional(string)
  }))
}

内容的提问来源于stack exchange,提问作者user971741

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:42:03