在aws-s3中,有一个方法(AWS :: S3 :: S3Object.stream),它允许您将S3上的文件流式传输到本地文件。我无法在aws-sdk中找到类似的方法。
即。在aws-s3中,我这样做:
File.open(to_file, "wb") do |file|
AWS::S3::S3Object.stream(key, region) do |chunk|
file.write chunk
end
end
AWS :: S3:S3Object.read方法确实将块作为参数,但似乎对它没有任何作用。
答案 0 :(得分:5)
aws-sdk gem现在支持S3中对象的分块读取。以下示例给出了演示:
s3 = AWS::S3.new
File.open(to_file, "wb") do |file|
s3.buckets['bucket-name'].objects['key'].read do |chunk|
file.write chunk
end
end
答案 1 :(得分:2)
此时,不是正式的。我在官方AWS Ruby论坛中找到了这个帖子:
Does the ruby aws gem support streaming download from S3。引用AWS员工:
不幸的是,aws-sdk gem没有很好的解决方案。我们正在研究如何让最终用户更加简单。
有用于下载块的示例代码。你可能想看看它的灵感。