Terraform在CodeBuild执行S3批量上传配置时报IDENT fileset解析错误
错误根因
该报错是Terraform版本完全不兼容导致的解析失败,不存在配置语法遗漏,触发逻辑如下:
- 报错精准匹配到你配置里第12行的
fileset标识符,本质是当前运行的Terraform版本无法识别该语法 - 你在Buildspec的install阶段安装的是Terraform 0.11.14,而
fileset内置函数、资源块级别的for_each循环语法,都是Terraform 0.12大版本才正式引入的能力,0.11版本的语法体系完全不支持上述写法 - 你参考的技术教程默认基于0.12及以上版本的Terraform环境编写,和你当前Buildspec里安装的低版本存在大版本语法断层,才会抛出无法识别token的解析错误
修复方案
- 调整Buildspec.yml的install阶段命令,将安装的Terraform版本替换为0.12及以上的稳定版本(推荐选择与AWS Provider兼容的长期维护版本),替换原有0.11.14的下载、解压、安装逻辑
- 确认代码仓库内与Terraform配置同级存在
myfiles/目录,且目录内存放需要上传的待同步文件,避免fileset扫描路径失效 - 版本升级后首次运行需要重新执行
terraform init拉取匹配版本的AWS Provider插件,避免出现Provider版本不兼容的二次报错
补充:Terraform 0.11版本没有内置的批量文件扫描能力,也不支持循环遍历的资源定义写法,无法在不重构全部配置的前提下实现当前的批量上传逻辑,强制适配老版本的改造成本远高于直接升级Terraform版本。
内容的提问来源于stack exchange,提问作者Jack Rogers
相关产品推荐
相关产品推荐

