【问题标题】:Calling assume_role results in an "InvalidClientTokenId" error调用assume_role 会导致“InvalidClientTokenId”错误
【发布时间】:2019-08-16 03:30:32
【问题描述】:

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

我有一个将用于调用 API 的 AWS 角色并拥有正确的权限。 我正在使用 Boto3 尝试担任该角色。

在我的 python 代码中

sts_client = boto3.client('sts')

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

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

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

【问题讨论】:

  • 您是否在 EC2 中运行此代码?
  • 抱歉回复晚了,不,这不是在 EC2 中运行的

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


【解决方案1】:

当您以这种方式构建客户端时,例如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('')

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2014-03-14
    • 2020-05-29
    • 2015-01-18
    • 2021-05-25
    • 2021-03-16
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    相关资源
    最近更新 更多