【问题标题】:Get keys in chunks from AWS S3从 AWS S3 获取块中的密钥
【发布时间】:2015-12-03 15:22:54
【问题描述】:

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

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

这对我们来说总是挂起,大概是由于大量的键。如果我们获得具有较少总键数的不同存储桶的键,或者使用前缀,则它工作正常。出于项目特定的原因,我们希望避免使用桶 B 的前缀。有什么方法可以从B 获取所有密钥,但分块?

【问题讨论】:

  • boto.readthedocs.org/en/latest/ref/… 为参考,boto 的 call list() 也提供了分页功能。唯一的问题是您必须对其进行迭代并将密钥列表存储在其他列表中。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多