如何解决AWS CLI调用get-session-token时的AccessDenied错误?
排查方向整理
确认当前凭证类型
你当前的ARN是arn:aws:sts:XXXXX:assumed-role/YYYYYY/botoscore-session-ZZZZ,说明正在使用角色临时会话凭证,而aws sts get-session-token仅支持使用IAM用户的长期访问凭证(Access Key ID + Secret Access Key)调用。执行aws sts get-caller-identity验证当前凭证类型,若返回的Arn以assumed-role开头,就会触发这个错误。切换至IAM用户长期凭证
需要切换到对应IAM用户的基础凭证配置(而非角色临时凭证),再执行get-session-token命令。如果之前是通过aws sts assume-role获取的临时凭证,需先恢复到用户级别的凭证配置(比如修改~/.aws/credentials文件,切换到对应的用户配置段)。校验MFA参数正确性
确保--serial-number参数对应的是IAM用户的MFA设备ARN(格式应为arn:aws:iam::你的账号ID:mfa/用户名),而非角色相关的ARN。同时确认输入的--token-code是当前MFA设备生成的有效验证码。检查IAM用户权限
确认该IAM用户已被授予sts:GetSessionToken权限,且没有附加拒绝该操作的权限策略。可以查看用户的权限策略,确保包含类似以下的允许语句:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:GetSessionToken", "Resource": "*" } ] }修正命令格式
原命令中输出文件的写法有误,应使用重定向符号指定输出:aws sts get-session-token \ --duration-seconds $DURATION \ --serial-number $AWS_SERIAL \ --token-code $AWS_MFA \ --output json > ~/.aws/cli/cache/session.json
内容的提问来源于stack exchange,提问作者quantCode
相关产品推荐
相关产品推荐

