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

使用aws-vault获取凭证失败:InvalidClientTokenId错误求助

解决aws-vault exec报错InvalidClientTokenId的问题

我之前排查过类似的aws-vault问题,结合你描述的情况(密码错误会触发Mac钥匙串提示、本地配置文件确认无误),大概率是缓存的凭据失效或者角色信任配置/源凭据的隐性问题,可以按以下步骤逐一排查:

1. 清除aws-vault的本地缓存凭据

aws-vault会把生成的临时凭据存在Mac钥匙串里,如果这些凭据已经过期或者失效,即使密码正确,取出来的也是无效令牌。你可以:

  • 执行命令直接清除缓存:
    aws-vault clear
    
  • 或者手动清理钥匙串:打开「钥匙串访问」应用,搜索aws-vault,删除所有相关条目,之后重新执行aws-vault exec命令,会重新生成有效的临时凭据。

2. 验证源用户凭据的有效性

你用来AssumeRole的源IAM用户(就是存在~/.aws/credentials里的用户)可能已经失效,比如Access Key被禁用/过期。可以直接用这个用户的凭据执行:

aws sts get-caller-identity --profile <你的源用户profile名>

如果这个命令报错InvalidClientTokenId,那就是源用户的密钥有问题,需要去AWS控制台重新生成Access Key并更新到本地配置文件。

3. 检查目标角色的信任关系

AWS的错误提示有时候不够精准,InvalidClientTokenId也可能是因为目标角色的信任策略没有允许你的源用户Assume它。你可以登录AWS控制台:

  • 进入IAM → 角色 → 找到role_name
  • 查看「信任关系」标签,确认策略里包含你的源用户ARN,比如:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/你的源用户名"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

如果没有这个条目,需要添加进去。

4. 尝试移除--no-session参数

--no-session参数会让aws-vault直接使用长期凭据(如果角色允许的话),但有些角色配置了必须使用会话才能Assume。你可以试试不带这个参数执行:

aws-vault exec --debug role_name

如果成功的话,说明你的目标角色不允许无会话的AssumeRole请求,需要去掉这个参数使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:22:39