使用CloudPosse模块执行Terraform Apply遇list函数弃用报错,如何修复?
修复Terraform中
list()函数弃用报错的方案 错误原因
报错源于Terraform 0.12及以上版本已弃用list()函数,官方要求改用tolist([...])语法或直接用方括号定义字面量列表。
修复步骤
- 定位报错文件:
.terraform/modules/cloudwatch_logs.user.label/main.tf的第5行 - 将代码里的
list(var.namespace, var.stage, var.name)替换为[var.namespace, var.stage, var.name](或tolist([var.namespace, var.stage, var.name]),二者在该场景下功能等价) - 修改后的完整代码行如下:
id = "${lower(join(var.delimiter, compact(concat([var.namespace, var.stage, var.name], var.attributes))))}"
可选优化方案
若不想手动修改模块内部代码,可尝试将cloudposse/cloudwatch_logs模块升级到支持Terraform 0.12+的最新版本,官方维护的模块通常会跟进Terraform版本要求,升级后可自动解决该兼容性问题。
内容的提问来源于stack exchange,提问作者Rajyashree patra
相关产品推荐
相关产品推荐

