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

如何创建含条件元素的Terraform映射列表?

Terraform 过滤空映射生成列表方案

方法一:通过映射长度自动过滤

先定义所需变量:

variable "A" {
  type = map(string)
}

variable "B" {
  type = map(string)
}

variable "C" {
  type = map(string)
}

通过for表达式结合length函数筛选非空映射,生成目标列表:

locals {
  final_list = [
    for item in [var.A, var.B, var.C] : item
    if length(item) > 0
  ]
}

当传入A = { foo = "bar" }、B = {}、C = { foo = "bar" }时,local.final_list会自动排除空映射B,得到[{foo = "bar"}, {foo = "bar"}]。

方法二:通过布尔标记手动控制

如果需要更灵活的控制(比如即使映射非空也可选择不加入),可以给每个变量搭配一个布尔开关:

variable "A" {
  type = map(string)
}

variable "A_enabled" {
  type = bool
  default = true
}

variable "B" {
  type = map(string)
}

variable "B_enabled" {
  type = bool
  default = false
}

variable "C" {
  type = map(string)
}

variable "C_enabled" {
  type = bool
  default = true
}

利用compact函数过滤null值生成列表:

locals {
  final_list = compact([
    var.A_enabled ? var.A : null,
    var.B_enabled ? var.B : null,
    var.C_enabled ? var.C : null,
  ])
}

这种方式下,只要对应布尔变量设为true,就会将映射加入列表,不受映射是否为空限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:40:25