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

Terraform 1.1.9升级后list函数报错,求正确代码修改方案

问题解决:Terraform 1.1.9中替换废弃的list函数

错误原因分析

  1. 原错误是Terraform 0.12+已废弃list()函数,要求改用tolist([...])语法定义字面量列表。
  2. 你后续修改的错误在于:给tolist()传入了单个字符串值(每个子网ID都是字符串),而tolist()需要接收可转换为列表的集合(比如数组字面量),直接传单个字符串会触发类型转换失败。

正确修改方案

将原代码中的list(...)替换为tolist([元素1, 元素2, 元素3]),把三个子网ID放在一个数组字面量中,再通过tolist()转为列表类型,确保与coalesce函数要求的参数类型一致。

修正后的代码:

ec2MidSubnetIds = coalesce(
  var.ec2MidSubnetIds,
  lookup(
    local.solution_data["config"],
    "ec2MidSubnetIds",
    tolist([
      local.subnets[local.mid_subnets_a_index]["id"],
      local.subnets[local.mid_subnets_b_index]["id"],
      local.subnets[local.mid_subnets_c_index]["id"]
    ])
  )
)

补充说明

  • tolist([...])是Terraform 0.12+定义列表字面量的标准方式,方括号[]是数组字面量,tolist()确保其被解析为列表类型。
  • coalesce函数要求所有参数类型必须一致,所以默认值的类型要和var.ec2MidSubnetIds、lookup返回值的类型保持统一(均为列表类型)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:09:25