我有一个桶,按键结构如下:
path/to/file1
path/to/file2
path/of/file3
path/of/file4
我希望能够获得path
中的“文件夹”列表。实际用例有许多“子文件夹”,所以我需要过滤列表。理想情况下,我只希望收到两个条目:到
和的。
使用boto3,我期望以下两个调用基本相等,即两个调用的列表产生相同的结果:
使用S3资源返回的bucket
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列表,而第二个返回一个JSON,其中通用前缀
键具有两个条目。
问题:我错过了什么?
从https://github.com/boto/boto3/issues/134#issuecomment-116766812
未包含在返回的对象列表中的原因是,使用分隔符时期望的值是前缀(例如欧洲/
,北美
),并且前缀没有映射到对象资源接口中。