由于机密性,我不能提供太多细节,但是我会尽力指出。
我有一个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):请求中包含的安全令牌无效。”
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
以这种方式构造客户端时,例如sts_client = boto3.client('sts')
,它使用boto3 DEFAULT_SESSION
,它从您的~/.aws/credentials
文件中提取(可能在其他位置;我未作进一步调查)。
当我遇到这个问题时,aws_access_key_id
,aws_secret_access_key
和aws_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('')
。