Boto3:仅从S3资源中获取所选对象

时间:2016-03-24 20:02:09

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

我可以通过

抓取并读取我的AWS S3存储桶中的所有对象
s3 = boto3.resource('s3')
    bucket = s3.Bucket('my-bucket')
    all_objs = bucket.objects.all()
    for obj in all_objs:
        pass
        #filter only the objects I need

然后

obj.key

会给我一条路径。

有没有办法预先过滤那些尊重某个起始路径(存储桶中的目录)的文件,这样我就可以避免遍历所有对象并稍后过滤?

2 个答案:

答案 0 :(得分:22)

使用汇总等filter [1][2]集合方法。

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
objs = bucket.objects.filter(Prefix='myprefix')
for obj in objs:
    pass

答案 1 :(得分:0)

如果我们只需要对象键列表,那么bucket.objects.filter是list_objects或list_object_v2的更好选择,因为这些函数最多可以有1000个对象。参考:list_objects_v2