调用假定_角色将导致“ InvalidClientTokenId”错误

时间:2018-08-11 00:44:32

标签: python amazon-web-services boto3 amazon-iam

由于机密性,我不能提供太多细节,但是我会尽力指出。

我有一个AWS角色,该角色将用于调用API并具有正确的权限。 我正在使用Boto3尝试扮演这个角色。

在我的python代码中,

sts_client = boto3.client('sts')

response = sts_client.assume_role(
    RoleArn="arn:aws:iam::ACCNAME:role/ROLENAME",
    RoleSessionName="filler",
)

使用此代码,我得到此错误:     “调用AssumeRole操作时发生错误(InvalidClientTokenId):请求中包含的安全令牌无效。”

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

以这种方式构造客户端时,例如sts_client = boto3.client('sts'),它使用boto3 DEFAULT_SESSION,它从您的~/.aws/credentials文件中提取(可能在其他位置;我未作进一步调查)。

当我遇到这个问题时,aws_access_key_idaws_secret_access_keyaws_session_token的值是过时的。在默认配置文件中更新它们(或直接在client调用中直接覆盖它们)解决了此问题:

sts_client = boto3.client('sts',
    aws_access_key_id='aws_access_key_id',
    aws_secret_access_key='aws_secret_access_key',
    aws_session_token='aws_session_token')

顺便说一句,我发现启用流日志记录是有帮助的,并使用输出深入到boto3源代码并发现问题:boto3.set_stream_logger('')