创建私有S3 Bucket时Terraform依赖锁文件报错求助
问题解决:Terraform 找不到 hashicorp/s3 provider 错误
问题根源
你编写的s3_bucket_public_access_block资源类型缺少aws_前缀,导致Terraform错误地认为该资源属于一个不存在的hashicorp/s3 provider,而非你已经配置的hashicorp/aws provider。所有AWS相关的Terraform资源类型都必须以aws_开头。
修正步骤
修正资源配置
将你的S3公共访问阻止资源块的类型改为aws_s3_bucket_public_access_block,修正后的代码如下:resource "aws_s3_bucket_public_access_block" "block_public" { bucket = aws_s3_bucket.block_public.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true }清理并重新初始化
- 删除项目根目录下的
.terraform.lock.hcl文件,清除错误的依赖记录 - 执行
terraform init重新初始化Terraform环境
- 删除项目根目录下的
错误原因说明
当Terraform遇到未指定provider的资源类型时,会默认尝试匹配与资源类型同名的provider(例如s3_bucket_public_access_block会匹配s3 provider)。但HashiCorp官方Registry中不存在hashicorp/s3这个provider,因此会触发"找不到provider包"的错误。而所有AWS服务的资源都属于hashicorp/aws provider,必须使用aws_前缀的资源类型。
内容的提问来源于stack exchange,提问作者zio
相关产品推荐
相关产品推荐

