在rails应用程序中从s3存储桶获取超过1000个对象

时间:2012-11-11 14:37:53

标签: ruby-on-rails ruby-on-rails-3 amazon-s3 amazon-web-services

我必须编写一个rails任务来从s3存储桶获取文件,但我的存储桶有超过1000个对象。

.
#Connection codes and configures
.
bucket = AWS::S3::Bucket.find('my_bucket')
puts bucket.size
# => 1000

这段代码只给我1000个对象:(
我如何从s3桶中获取所有对象?

1 个答案:

答案 0 :(得分:9)

S3 developer documentation中所述:

  

要管理大型结果集,Amazon S3会使用分页来分割它们   多个回应。每个列表键响应返回一页向上   到1000个键,指示响应是否为指示符   截断。您发送一系列列表键请求,直到您有   收到所有钥匙。

REST GET Bucket操作的响应包含 IsTruncated 元素,该元素扮演上述指标的角色。

要使用AWS :: S3库检索下一组结果,请使用当前结果页面中的最后一个键作为下一个请求中的标记。