2012-03-08 50 views
5

aws-s3には、S3上のファイルをローカルファイルにストリームする方法(AWS :: S3 :: S3Object.stream)があります。私はaws-sdkで同様のメソッドを見つけることができませんでした。Ruby AWS :: S3 :: S3Object(aws-sdk):aws-s3のようにデータをストリーミングする方法はありますか?

すなわち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はストリーミングの読み取りをサポートするようになりました。これを反映するようにフォーラムのトピックが更新されました。 –

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

チャンクサイズを指定できますか? –

+0

私が知る限り、Ruby Net :: HTTPでは、各チャンクのサイズを制御することはできません。 –

関連する問題