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

使用有效MFA TokenCode调用AssumeRole时遇AccessDenied错误求助

AWS AssumeRole MFA AccessDenied 错误排查与解决

我在运行以下Python代码尝试通过MFA验证来Assume AWS IAM角色时,明明输入了有效的TOTP验证码,却一直收到AccessDenied错误,提示MFA一次性密码无效,恳请帮忙解决。

运行的代码

import boto 
import boto3 
from boto.s3.connection import S3Connection 
from boto.sts import STSConnection 

# Prompt for MFA time-based one-time password (TOTP)
mfa_TOTP = raw_input("Enter the MFA code: ") 
role_arn = "arn:aws:iam::123456789012:role/TestOperator" 

client = boto3.client('sts') 
response = client.assume_role(
    RoleArn=role_arn,
    SerialNumber="arn:aws:iam::760787039612:mfa/C34768",
    RoleSessionName="test",
    TokenCode=mfa_TOTP
) 
print response 

报错信息

ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation: MultiFactorAuthentication failed with invalid MFA one time pass code.


可能的原因及解决方案

我帮你梳理几个最可能导致这个错误的点,你可以逐一排查:

1. MFA设备ARN的账号与当前凭证账号不匹配

你代码里的RoleArn属于账号123456789012,但SerialNumber是账号760787039612下的MFA设备。这里要注意:SerialNumber必须是你当前用来调用AssumeRole的AWS用户的MFA设备ARN,也就是你本地AWS凭证(比如~/.aws/credentials里的密钥)所属账号的用户MFA。

举个例子:如果你是用账号760787039612下的用户凭证运行代码,那这个SerialNumber是对的,但需要确认目标角色TestOperator的信任策略是否允许该账号的用户通过MFA来AssumeRole;如果你的本地凭证属于123456789012账号,那SerialNumber应该换成该账号下你的用户的MFA设备ARN。

2. MFA验证码过期或输入错误

TOTP验证码每30秒更新一次,有时候输入的时候可能刚好过了有效期,建议你刷新验证码后立即输入,确保整个输入过程在30秒内完成,并且不要多输/少输数字。

3. 目标角色的信任策略配置问题

检查TestOperator角色的信任策略,确认它允许你的用户所在账号的访问,并且明确要求MFA验证。正确的信任策略应该类似这样:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::你的用户账号ID:user/你的用户名"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      }
    }
  ]
}

如果信任策略没有要求MFA,或者没有授权你的用户,也可能触发类似的错误提示。

4. 升级boto3版本

旧版本的boto3可能存在STS服务调用的兼容性问题,建议升级到最新版试试:

pip install --upgrade boto3

5. 检查本地凭证配置

确保你本地的AWS凭证(比如~/.aws/credentials文件)里的access key和secret key是正确的,对应的用户确实拥有Assume该角色的权限,并且已经启用了MFA设备。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:19