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

Terraform如何将list(map(string))转map实现参数覆盖?

Terraform列表参数合并实现方案

你当前的问题根源是merge函数仅支持map/object类型入参,而你定义的default_parameters和instances下的parameters都是list(map(string))类型,需要先做类型转换再合并。

转换逻辑

通过for表达式将参数列表转换为以参数name为key的map,再用merge合并,合并后实例的同名参数会自动覆盖默认参数,最后直接供给dynamic块使用即可,不需要修改你原有content块的逻辑。

最终可用代码

dynamic "parameters" {
  for_each = merge(
    # 转换默认参数列表为map
    { for param in var.default_parameters : param.name => param },
    # 转换当前实例的参数列表为map,同name参数优先级更高
    { for param in var.instances[each.key].parameters : param.name => param }
  )
  content {
    name  = parameters.value.name
    value = parameters.value.value
  }
}

可选优化

如果存在实例未配置parameters的场景,可以加try函数做兜底避免报错:

{ for param in try(var.instances[each.key].parameters, []) : param.name => param }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:54:01