基础Terraform执行terraform plan失败,请求排查AWS凭证问题
Terraform AWS Provider 配置错误排查:source_profile 需要 role_arn
问题描述
拥有如下Terraform配置文件main.tf:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.16" } } required_version = ">= 1.2.0" } provider "aws" { profile = "default" } resource "aws_s3_bucket" "test-bucket-terraform-regergjegreg" { bucket = "test-bucket-terraform-regergjegreg" tags = { Name = "My bucket" Environment = "Dev" } }
执行terraform validate返回Success! The configuration is valid.,但执行terraform plan时触发错误:
Planning failed. Terraform encountered an error while generating this plan. ╷ │ Error: configuring Terraform AWS Provider: credential type source_profile requires role_arn, profile default │ │ with provider["registry.terraform.io/hashicorp/aws"], │ on main.tf line 12, in provider "aws": │ 12: provider "aws" { │ ╵
当前环境信息:
Terraform v1.4.6 on darwin_amd64 + provider registry.terraform.io/hashicorp/aws v3.76.1
已确认~/.aws/credentials和~/.aws/config中存在default配置文件,但问题仍存在。
排查与解决方案
1. 检查AWS配置文件格式
错误提示明确指出default配置文件使用了source_profile但未指定role_arn,说明你的~/.aws/config里的default配置可能是角色切换类型,而非普通静态凭证。
打开~/.aws/config查看default段:
- 若配置使用
source_profile,确认role_arn是否存在,缺失则补充:[profile default] source_profile = some-other-profile role_arn = arn:aws:iam::123456789012:role/MyRole - 若
default本应是普通静态凭证,需修正配置:~/.aws/config中:[profile default] region = us-east-1~/.aws/credentials中:[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY
2. 对齐AWS Provider版本
配置中要求AWS Provider版本~> 4.16,但实际使用v3.76.1,版本不匹配可能导致凭证解析逻辑差异。执行命令更新Provider:
terraform init -upgrade
更新后重新执行terraform plan验证。
3. 临时直接指定凭证排查
若上述方法无效,可在Provider配置中直接指定凭证测试,确认是否为配置文件读取问题:
provider "aws" { region = "us-east-1" access_key = "YOUR_ACCESS_KEY" secret_key = "YOUR_SECRET_KEY" }
注意:此方法仅用于排查,生产环境禁止硬编码凭证。
4. 检查环境变量干扰
确认没有覆盖AWS配置的环境变量,执行命令查看:
echo $AWS_PROFILE echo $AWS_ACCESS_KEY_ID
若存在无关变量,用unset AWS_PROFILE等命令清除后重试。
内容的提问来源于stack exchange,提问作者brushtakopo
相关产品推荐
相关产品推荐

