2012-03-08 155 views
5

在aws-s3中,有一個方法(AWS :: S3 :: S3Object.stream),它允許您將S3上的文件傳輸到本地文件。我一直無法在aws-sdk中找到類似的方法。在AWS-S3Ruby AWS :: S3 :: S3Object(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方法確實需要一個塊作爲參數,但似乎並沒有用它做任何事情。

回答

2

在這個時候,不是正式的。我在官方的AWS Ruby論壇發現了這個主題:

Does the ruby aws gem support streaming download from S3。引用AWS的工作人員:

不幸的是,不是烤到AWS-SDK寶石一個很好的解決方案。我們正在研究如何讓最終用戶更簡單。

有大塊下載的示例代碼。你可能想看看這個靈感。

+1

aws-sdk gem現在支持流式讀取。論壇主題已更新,以反映這一點。 – 2012-08-09 00:00:37

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 
+0

我可以指定塊大小嗎? – 2012-09-05 16:59:57

+0

據我所知,Ruby Net :: HTTP不允許您控制每個已產生塊的大小。 – 2012-10-29 16:28:23

相關問題