boto3 Bucket.object.filter是否有效地检索对象?

时间:2017-03-31 14:30:40

标签: amazon-s3 boto3

我想获得位于foo-bucket / foo-dir的所有对象(或最大1000)的列表,例如。

  

Bucket:foo-bucket

     

目录:foo-dir

我看到Bucket.objects boto3 API使用过滤(Bucket.objects.filter)

我想知道它在内部做了什么?它是否列出了所有对象和过滤器?或者AWS是否提供了一个API,它接受过滤器参数并返回过滤后的结果。

1 个答案:

答案 0 :(得分:0)

S3 API支持prefix请求上的ListObjects,该请求将过滤响应以仅包含名称与prefix匹配的对象。所以:

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
for obj in bucket.objects.filter(Prefix='foo/bar/fie/baz/'):
    # do something with obj here

只返回名称以前缀foo/bar/fie/baz/开头的对象。