ここでNode.jsの開発者はRubyで作業する必要があるので、私はRubyの多くの概念をかなり新しくしています。Rubyのメモリ変換ストリームでは?
私は、S3から非常に大きな区切りのJSONファイルをダウンロードし、データを変換してS3に戻して、ディスクに何も書き込まずにメモリにすべて格納しなければならないというケースがあります。
はノードでは、私はこのような何かを行うことができます:彼らが来ると同時にS3にそれらを置くようその場でオブジェクトを変換します
s3DownloadStream('my-file').pipe(transformStream).pipe(backToS3Stream)
。
Rubyで同じ動作を達成するための適切な行動計画を見つけるのが難しいです。私はIO.pipeとCelluloid :: IOを可能なオプションとして見てきましたが、まだこれを行うことができるようには思えません。
これは役に立ちます:https://aws.amazon.com/blogs/developer/downloading-objects-from-amazon-s3-using-the-aws-sdk-for-ruby/ –
@AlexandreAngelim私はそれを見ましたポストが、大きなファイルをディスクにダウンロードするか、メモリIOにダウンロードするかのように思えます。そのポストでは、変換を介してダウンロードをパイプして同時にs3に戻ることができるということについては何も見ていませんでした。私はforkやThread.newを使わなければならないと思っていますが、似たようなことをしている人の実例を得ることを望んでいます。 – aloisbarreras
上記のリンクはあなたのほとんどのところであなたを得ます。 「ブロックの使用」のコードを見てください。各チャンクをファイルに書き込むのではなく、チャンクを処理してからS3に結果をアップロードします(マルチパートアップロードAPIを使用します)。 –