调用assume_role会导致"InvalidClientTokenId"错误



由于保密原因,我不能提供太多细节,但我会尽力说明。

我有一个 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(:请求中包含的安全令牌无效。">

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

当你以这种方式构造客户端时,例如sts_client = boto3.client('sts'),它使用 boto3DEFAULT_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('').

相关内容

  • 没有找到相关文章

最新更新