Terraform Snowflake Provider切换报错:不兼容的提供商版本
解决方案
清理CodeBuild环境缓存
CodeBuild默认可能缓存.terraform目录和提供商数据,先在构建脚本开头添加清理命令:rm -rf .terraform/ .terraform.lock.hcl同时检查CodeBuild项目的缓存配置,如果启用了S3缓存,先清空对应缓存目录,或者临时禁用缓存验证问题。
刷新并提交提供商锁定文件
本地执行terraform init -upgrade,生成只包含Snowflake-Labs/snowflake的.terraform.lock.hcl文件,把这个文件提交到代码仓库。CodeBuild会依赖这个锁定文件拉取提供商,旧锁定文件可能残留了chanzuckerberg的条目。排查模块依赖
如果项目使用了第三方Terraform模块,检查这些模块的required_providers配置,确认它们没有引用旧的chanzuckerberg/snowflake。可以用本地命令排查所有依赖提供商:terraform providers若模块存在问题,要么升级模块到兼容新版本的版本,要么在根模块的
required_providers中强制覆盖配置:terraform { required_providers { snowflake = { source = "Snowflake-Labs/snowflake" version = "0.61.0" } } }对齐Terraform版本
确保CodeBuild使用的Terraform版本和本地一致,旧版本Terraform可能对提供商切换处理存在兼容问题。可以在构建步骤中指定安装特定版本:wget https://releases.hashicorp.com/terraform/1.6.0/terraform_1.6.0_linux_amd64.zip unzip terraform_1.6.0_linux_amd64.zip sudo mv terraform /usr/local/bin/
内容的提问来源于stack exchange,提问作者Dhans
相关产品推荐
相关产品推荐

