我有一个具有以下键结构的存储桶:
path/to/file1
path/to/file2
path/of/file3
path/of/file4
我希望能够获得path
中的“文件夹”列表。实际的用例有许多“子文件夹”,因此我需要过滤列表。理想情况下,我只希望接收两个条目:to
和of
。
使用boto3,我期望以下两个调用基本相等,即两个列表产生的结果相同:
使用S3资源返回的存储桶
s3 = boto3.resouce('s3')
bucket = s3.Bucket('bucketname')
bucket.objects.filter(Prefix='path/', Delimiter='/').all()
和潜在客户
s3 = boto3.resouce('s3')
s3.meta.client.list_objects(Bucket='path', Prefix='', Delimiter='/')
但是,第一个返回空列表,而第二个返回带有CommonPrefixes
键且包含两个条目的JSON。
问题:我想念什么?
答案 0 :(得分:0)
来自https://github.com/boto/boto3/issues/134#issuecomment-116766812
它不包含在返回的对象列表中的原因是 使用分隔符时期望的值是 前缀(例如
Europe/
,North America
)和前缀不映射 进入对象资源界面。