Terraform plan执行失败:AWS Provider凭证验证错误求助
解决Terraform AWS Provider凭证验证失败(InvalidClientTokenId)问题
错误原因
InvalidClientTokenId 表示Terraform使用的AWS凭证无效,大概率是密钥输入错误、环境变量设置格式不对,或者终端会话未加载新变量导致。
分步解决
1. 确认AWS凭证的正确性
- 确保你用的
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY是从AWS控制台IAM用户页面复制的,没有多带空格、引号或其他特殊字符 - 验证该IAM用户拥有
sts:GetCallerIdentity权限(Terraform会调用这个API校验凭证有效性)
2. 修正Windows环境变量设置
命令提示符(CMD)正确写法
不要用SET VARIABLE,直接按以下格式设置:
set AWS_ACCESS_KEY_ID=你的访问密钥ID set AWS_SECRET_ACCESS_KEY=你的秘密访问密钥
注意:值不要加引号,设置完成后必须重启CMD窗口,让新变量生效。
PowerShell设置注意事项
你用的PowerShell语法是对的:
$env:AWS_ACCESS_KEY_ID="你的访问密钥ID" $env:AWS_SECRET_ACCESS_KEY="你的秘密访问密钥"
但同样需要重启PowerShell窗口,否则Terraform读不到新设置的环境变量。
3. 验证凭证是否生效
- 安装AWS CLI后,在终端执行:
如果返回用户ARN、ID等信息,说明凭证有效;如果报错,直接排查凭证本身。aws sts get-caller-identity - 临时测试Terraform配置(仅用于排查,不推荐生产环境):
修改main.tf的provider块,直接指定凭证:
执行provider "aws" { region = "us-east-1" access_key = "你的访问密钥ID" secret_key = "你的秘密访问密钥" }terraform plan,如果成功,说明之前的环境变量设置有问题。
4. 推荐的凭证管理方式
使用AWS凭证文件,避免每次手动设置环境变量:
- 在Windows用户目录下创建
.aws文件夹(比如C:\Users\你的用户名\.aws) - 在该文件夹内创建
credentials文件,内容如下:[default] aws_access_key_id = 你的访问密钥ID aws_secret_access_key = 你的秘密访问密钥 - Terraform会自动读取该文件的凭证,无需额外配置环境变量或在代码中硬编码。
内容的提问来源于stack exchange,提问作者gentot
相关产品推荐
相关产品推荐

