确定被拒绝访问的 IAM 委托人



我正在帮助一位同事解决 S3 放置"访问被拒绝"错误,当他使用内部调用boto3的 Python 库时。为了简化故障排除过程,我想知道哪个 IAM 委托人被拒绝。它不是实例的 IAM 角色,因为该角色具有完全 S3 访问权限,因此我正在尝试考虑其他可能性。

通常,如果我直接调用boto3代码,我不会有这个问题,因为我要么 1) 需要明确主体或 2)boto3会检查是否存在环境变量,例如AWS_ACCESS_KEY_ID,如果未设置,AWS 将回退到 EC2 实例的关联角色/默认配置文件(如果我对此优先级顺序有误,请纠正我)。

如何确定第三方库使用的拒绝主体,而不是通过深入研究库的源代码?

您可以使用此代码来标识正在使用的凭据:

import boto3
sts_client = boto3.client('sts')
response = sts_client.get_caller_identity()
print(response['Arn'])

它将显示如下 ARN:arn:aws:iam::123456789012:user/User-Name

如果您从 EC2 实例运行它,它将显示一个 ARN,如下所示:arn:aws:sts::123456789012:assumed-role/Role-Name/i-1234abcd

相关内容

  • 没有找到相关文章

最新更新