APIサーバーには、ディスク容量(500MB)とメモリー(1GB)が非常に限られています。取得するAPI呼び出しの1つは、ファイルを受信することです。消費者はAPIを呼び出し、ダウンロードするURLを渡します。サーバー間でcurlを使用してファイルをストリームする方法(サーバーリソースが限定されています)
私のサーバーの「目標」は、このファイルをAmazon S3にアップロードすることです。残念ながら、私は消費者にファイルを直接S3にアップロードするよう要求することはできません(要件の一部)。
問題は、巨大なファイル(10GB)をディスクに保存してから、S3にアップロードすることがオプションではない(500MBのディスク容量の上限)ことです。
私の質問は、curl Linuxプログラムを使用して入力URLからS3にファイルを "パイプ"することができますか?
注:私はさまざまな方法でパイプすることができましたが、最初にファイル全体をダウンロードしようとすると失敗するか、メモリエラーが発生し、カールが終了します。私の推測では、ダウンロードはアップロードよりもはるかに速いので、10GBのファイルを取得すると、パイプバッファ/メモリが大きくなり、爆発します(サーバー上で1GBのメモリ)。
カールとパイピングを使って何をしようとしているのかを達成する方法はありますか?
は、 をありがとう - ジャック
サーバーはどのように実装されていますか?ほとんどのプログラミング言語では、一度にメモリに余りに多くのデータを保存しないように、コード内で「ストリーム・イン/ストリーム・アウト」することができます。それがオプションでない場合は、インスタンスに適度なサイズのEBSボリューム(100GBなど)を追加し、一時的なステージング領域として使用することをお勧めします。 – stdunbar
@stdunbar - あまりにも多くの内部細部に入ることなく、私はカールを "呼び出す"ことを好み、仕事をします。それが実現可能であれば、素晴らしい!もしそうでなければ、私は他の方法を理解しなければならず、私はあなたの提案を取ります。タイ – Joe