boto S3存储桶对象过滤器,带有前缀和分隔符



我有一个带有以下关键结构的水桶:

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

我希望能够在path中获取"文件夹"列表。实际用例有许多"子文件夹",因此我需要过滤清单。理想情况下,我只想收到两个条目:toof

使用boto3,我期望以下两个呼叫基本上相等,即两者的列表都会产生相同的结果:

使用S3 Resource返回的存储桶

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='/')

但是,第一个返回emtpy列表,而第二个则返回带有两个条目的CommonPrefixes键的JSON。

问题:我想念什么?

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

之所以不包含在返回的对象列表中的原因是 使用定界符时您期望的值为 前缀(例如Europe/North America)和前缀不映射 进入对象资源接口。

最新更新