带有前缀和定界符的boto s3存储桶对象过滤器

时间:2019-02-26 10:35:40

标签: amazon-web-services amazon-s3 boto3

我有一个具有以下键结构的存储桶:

path/to/file1
path/to/file2
path/of/file3
path/of/file4

我希望能够获得path中的“文件夹”列表。实际的用例有许多“子文件夹”,因此我需要过滤列表。理想情况下,我只希望接收两个条目:toof

使用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。

问题:我想念什么?

1 个答案:

答案 0 :(得分:0)

来自https://github.com/boto/boto3/issues/134#issuecomment-116766812

  

它不包含在返回的对象列表中的原因是   使用分隔符时期望的值是   前缀(例如Europe/North America)和前缀不映射   进入对象资源界面。