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

Terraform执行terraform plan时遭遇AWS安全令牌无效错误求助

解决Terraform AWS认证错误(InvalidClientTokenId)

核心排查方向

1. 验证凭证本身的有效性

  • 逐字符核对access_key和secret_key,避免大小写错误、多余空格或复制遗漏;如果是临时凭证,必须同时提供session_token并在provider块中配置
  • 登录AWS控制台,进入IAM > 用户 > 安全凭证,确认对应访问密钥的状态为Active,未被禁用或删除
  • 临时凭证需检查过期时间,STS临时凭证最长有效期为12小时,过期后需重新获取

2. 清理本地凭证缓存与环境冲突

  • 备份并删除~/.aws/credentials和~/.aws/config文件,避免Terraform优先读取旧的本地凭证
  • 执行env | grep AWS,检查是否存在AWS_PROFILE、AWS_SESSION_TOKEN等环境变量,这些变量可能会覆盖provider块或手动设置的凭证
  • 如果使用AWS CLI配置了多个profile,确保Terraform没有默认加载错误的profile(可在provider块中显式指定profile = "your-profile")

3. 检查IAM权限与策略限制

  • 确认IAM用户/角色拥有sts:GetCallerIdentity权限,这是Terraform验证凭证的基础操作,需确保没有被显式拒绝的策略(包括IAM用户策略、组策略和组织级SCP)
  • 检查是否有SCP限制了STS服务的调用,部分组织会通过SCP限制特定区域或操作的访问

4. 网络连通性验证

  • 测试STS endpoint的连通性:执行curl https://sts.us-east-1.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15,如果无法返回正常响应,说明存在代理、防火墙或VPN拦截
  • 如果使用VPC endpoint访问STS,确认endpoint的安全组和策略允许sts:GetCallerIdentity操作

5. 独立验证凭证有效性

  • 用AWS CLI直接测试凭证,排除Terraform本身的问题:
    aws sts get-caller-identity --access-key "你的access_key" --secret-key "你的secret_key" --region us-east-1
    
    如果该命令报错,说明问题出在AWS凭证或权限上,与Terraform无关;如果正常返回,再检查Terraform的provider配置是否有遗漏

内容的提问来源于stack exchange,提问作者NKLSNKLS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:26:33