配置Terraform AWS Provider遇403错误,请求令牌无效
解决Terraform AWS Provider凭证验证失败(InvalidClientTokenId)的问题
检查Terraform使用的凭证来源
Terraform不会自动读取VSCode扩展的凭证配置,需确认它加载的凭证是否正确:
- 查看本地AWS凭证文件:检查
~/.aws/credentials(Linux/macOS)或C:\Users\<你的用户名>\.aws\credentials(Windows),确保其中的aws_access_key_id和aws_secret_access_key与VSCode使用的完全一致,避免多余空格、换行或特殊字符。 - 检查环境变量:Terraform会优先读取系统环境变量中的凭证,执行以下命令确认:
若输出凭证与预期不符,可删除该环境变量或修改为正确值。# Linux/macOS echo $AWS_ACCESS_KEY_ID echo $AWS_SECRET_ACCESS_KEY # Windows(PowerShell) echo $env:AWS_ACCESS_KEY_ID echo $env:AWS_SECRET_ACCESS_KEY
手动验证凭证有效性
即便VSCode可正常使用,仍需确认凭证能否调用STS接口:
执行AWS CLI命令(无CLI可使用curl):
# AWS CLI方式,替换为你的凭证配置文件名称 aws sts get-caller-identity --profile <你的配置文件名>
若返回InvalidClientTokenId,说明凭证本身存在问题,需前往IAM控制台重新生成Access Key/Secret Key,确保下载后准确保存,避免复制错误字符。
检查Terraform Provider配置
确认AWS Provider配置无硬编码错误或指定错误profile:
正确配置示例:
provider "aws" { region = "us-east-1" # 若使用自定义profile,需填写正确名称,默认profile可省略此行 # profile = "my-terraform-profile" }
若配置中硬编码了凭证,需核对是否与使用的凭证一致:
provider "aws" { region = "us-east-1" access_key = "<正确的Access Key>" secret_key = "<正确的Secret Key>" }
清理Terraform缓存
旧缓存可能导致凭证读取异常,执行以下命令清理后重新初始化:
terraform init -reconfigure rm -rf .terraform/ .terraform.lock.hcl
完成后再次执行terraform plan。
内容的提问来源于stack exchange,提问作者thickthumb
相关产品推荐
相关产品推荐

