我想获得位于foo-bucket / foo-dir的所有对象(或最大1000)的列表,例如。
Bucket:foo-bucket
目录:foo-dir
我看到Bucket.objects boto3 API使用过滤(Bucket.objects.filter)
我想知道它在内部做了什么?它是否列出了所有对象和过滤器?或者AWS是否提供了一个API,它接受过滤器参数并返回过滤后的结果。
答案 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/
开头的对象。