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

如何移除Terraform输出regions_data中的重复项?

移除Terraform输出中的重复项

首先要明确:Terraform的map类型不允许存在重复键,你给出的var.regions定义里重复的reg1键会被最后一次出现的覆盖,实际生效的var.regions是:

regions = {
  reg1 = {
    postcode = "1"
  },
  reg2 = {
    postcode = "2"
  }
}

如果你的实际场景是通过其他方式生成了包含重复值的集合(比如从列表或其他结构转换后出现重复的region/postcode字符串),可以通过以下两种方案去重:

方案1:使用distinct函数过滤重复项

将生成的字符串转为列表后用distinct移除重复元素,返回无重复的列表:

output "regions_data" {
  value = distinct([
    for region, data in var.regions :
    "${region}/${data.postcode}"
  ])
}

方案2:利用集合的自动去重特性

Terraform的set类型本身不允许重复元素,直接将生成的字符串转为set即可自动丢弃重复项:

output "regions_data" {
  value = toset([
    for region, data in var.regions :
    "${region}/${data.postcode}"
  ])
}

如果你的var.regions实际是列表类型(而非map,因为map不支持重复键),比如:

regions = [
  { region = "reg1", postcode = "1" },
  { region = "reg1", postcode = "1" },
  { region = "reg2", postcode = "2" }
]

只需调整遍历逻辑,上述两种方案依然适用:

output "regions_data" {
  value = distinct([
    for item in var.regions :
    "${item.region}/${item.postcode}"
  ])
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:41:56