You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基础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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:15:19