【发布时间】:2019-12-29 06:35:56
【问题描述】:
我预置了一些 AWS 密钥。这些密钥使我可以访问 s3 存储桶中的某些目录。我想使用boto3 与暴露给我的目录进行交互,但是我似乎根本无法对存储桶执行任何操作,因为我无权访问整个存储桶。
这适用于我的终端:
aws s3 ls s3://the_bucket/and/this/specific/path/
但如果我这样做:
aws s3 ls s3://the_bucket/
我明白了:
调用 ListObjects 时发生错误 (AccessDenied) 操作:拒绝访问
当我尝试通过boto3 访问目录时也会发生这种情况。
session = boto3.Session(profile_name=my_creds)
client=session.client('s3')
list_of_objects = client.list_objects(Bucket='the_bucket', Prefix='and/this/specific/path', Delimiter='/')
我是否需要请求访问整个存储桶才能使boto3 可用?
【问题讨论】:
-
您有权访问 IAM 政策吗?您无权列出存储桶中的对象,但您可能有权通过密钥获取某些对象(列出和获取是不同的权限)。不过,如果没有看到该政策,我不能肯定地说。
-
此外,您不能在 ARN 上提供 ListObjects,而不仅仅是存储桶。它可以通过条件进一步限制,但您允许桶上的 list 和带有前缀或键的 arn 上的 get 对象。
-
请在您的问题中附上 IAM 政策的副本。
标签: python amazon-web-services amazon-s3 boto boto3