Terraform 1.1.9升级后list函数报错,求正确代码修改方案
问题解决:Terraform 1.1.9中替换废弃的list函数
错误原因分析
- 原错误是Terraform 0.12+已废弃
list()函数,要求改用tolist([...])语法定义字面量列表。 - 你后续修改的错误在于:给
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
相关产品推荐
相关产品推荐

