从AWS S3获取密钥块

时间:2015-12-03 15:22:54

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

我们在S3中有一个桶中的大量密钥B,我们需要使用boto从s3下载它们,然后在python中迭代所有密钥。到目前为止我们找到密钥的唯一方法是调用list(),它试图立即从B下载所有密钥,即:

bucket = boto.connect_s3().get_bucket(`B`)
keys = bucket.list()

这总是让我们感到困惑,可能是因为钥匙很多。如果我们获得具有较少总键数的不同存储桶的密钥,或者如果使用前缀,则它可以正常工作。出于项目特定原因,我们希望避免使用存储桶B的前缀。有没有办法从B获取所有密钥,但是以块为单位?

1 个答案:

答案 0 :(得分:1)

您应该能够将Bucket对象本身用作生成器,如下所示:

s3 = boto.connect_s3()
bucket = s3.get_bucket('foo')
for key in bucket:
    <do stuff with key>

以这种方式使用时,Bucket对象将在后台为您执行结果分页,并且一次只抓取一页键。