我正在尝试使用python的boto3访问一个bucket子文件夹。
问题是我无法在任何地方找到如何在boto代码中输入子文件夹信息。
我找到的只是如何放置存储桶名称,但我无法访问整个存储桶,只能访问特定的子文件夹。任何人都可以给我一个亮点吗?
到目前为止我做了什么:
BUCKET = "folder/subfolder"
conn = S3Connection(AWS_KEY, AWS_SECRET)
bucket = conn.get_bucket(BUCKET)
for key in bucket.list():
print key.name.encode('utf-8')
错误消息:
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
我不需要使用boto进行操作,我只需要列出/获取此子文件夹中的文件。
P.S。:我可以通过路径folder/subfolder
使用 cyberduck 来访问文件,这意味着我可以访问日期。
此致
以色列
答案 0 :(得分:1)
尝试:
for obj in bucket.objects.filter(Prefix="your_subfolder"):
do_something()
AWS实际上没有目录结构 - 它只是通过在名称中加入“/”来伪造一个。 Prefix
选项将搜索限制为名称以给定前缀开头的所有对象,该对象应该是您的“子文件夹”。
答案 1 :(得分:1)
我使用类似的vtl建议修复了问题:
我必须把前缀放在我的桶和分隔符中。最终的代码是这样的:
objects = s3.list_objects(Bucket=bucketName, Prefix=bucketPath+'/', Delimiter='/')
正如他所说,没有文件夹结构,那么你必须说明一个分隔符,并像我一样把它放在 前缀 之后。
感谢您的回复。