AJAX 経由でファイルを Amazon S3 にアップロードしています (ブラウザのファイル API を使用し、実際のアップロード スクリプトを Amazon S3 に iframe として保存して、Amazon S3 のクロスサイトの問題を回避します。アイデアについては jquery-file-upload の厚意によります)。 . 私はそれが機能しており、小さなファイル(<50 MB程度)に最適です。ただし、非常に大きなファイルを Amazon S3 に保存しようとしています。サイズが 10 GB 以上になる構成済みの仮想マシンなどを保存したいと考えています。
HTML5 ファイル API に関する私の理解では、クライアント上で大きなファイルを小さなビットに分割してアップロードできます。次に、ファイルを結合してファイルを S3 に移動するのは、サーバー コードの役割です。概念は理解できますが、最適な実装についてはわかりません。
私はアプリ サーバーに Heroku を使用しており、通常は Heroku のサーバーを完全にスキップして、ファイルを Amazon S3 に直接アップロードしています。ただし、アップロードを小さなビットにチャンクすると、実際に S3 に配置する前に、パーツを結合するコードが必要になります。しかし、Heroku で使用できるデータ量にはいくつかの制限があり、10 GB のファイルを結合しても、Heroku のサーバーで効果的に機能するとは思いません (100% 確実ではありませんが、疑わしいです)。
したがって、私の現在の考えでは、アプリがアップロード パーツを送信する Amazon EC2 サーバーに Web サービス アプリをセットアップする必要があります。その後、EC2 アプリは、アップロード部分を結合し、最終的に結合されたファイルを S3 に配置する役割を果たします。ファイルが S3 にロードされると、S3 は Heroku でホストされている元のアプリに応答を送信し、Heroku は S3 に保存されたファイルを指すリソースを作成します。
ファイルを結合するために別の EC2 サーバーを使用することを回避する現実的な方法はありますか? EC2 と S3 の間でファイルを送信するのに費用はかかりませんが、目的を達成するために 2 つのアプリ (Heroku のメイン アプリと EC2 のファイル結合アプリ) を維持する必要はありません。