AWS CodeBuild运行Terraform报Exec format error问题
问题根因
terraform: Exec format error是CPU架构不匹配的典型报错,和你调整过的AWS Provider版本、CodeBuild特权模式开关没有任何关系。
你在install阶段下载的是ARM64架构编译的Terraform二进制包,但当前CodeBuild项目选用的构建镜像为x86_64(AMD64)架构,系统无法识别ARM指令集格式的可执行文件,因此所有terraform相关命令都无法正常启动。
修复方案
二选一即可解决问题:
- 方案一:保留现有buildspec配置不变,进入CodeBuild项目的环境配置页,将构建环境的CPU架构从x86_64调整为ARM64,保存配置后重新触发构建即可。
- 方案二:保留现有x86_64构建环境不变,修改buildspec.yaml中Terraform安装包的下载逻辑,将原来下载的ARM64版本安装包替换为同版本号的AMD64版本安装包即可。修改后的install阶段参考配置如下:
install: commands: - "apt install unzip -y" # 将原arm64架构安装包替换为amd64架构对应版本 - "wget 对应版本的linux_amd64架构terraform压缩包地址" - "unzip 下载好的amd64版本压缩包" - "mv terraform /usr/local/bin/" # 增加版本校验步骤,提前验证二进制可用性 - "terraform version"
后续注意事项
- 建议在Terraform安装完成后立刻执行
terraform version做可用性校验,不需要等到pre_build阶段执行init时才发现安装问题,能缩短排查路径 - 等架构问题修复后,执行
terraform init前需要确认CodeBuild绑定的服务角色拥有S3状态桶的对应读写权限,如果配置了DynamoDB状态锁,还需要给角色授予对应DynamoDB表的读写权限,避免触发权限类报错 - 生产环境构建时建议增加安装包校验步骤,避免下载到损坏的二进制文件触发同类执行错误
内容的提问来源于stack exchange,提问作者Shank
相关产品推荐
相关产品推荐

