2012-02-19 5 views
11

iPhoneアプリ用のWebサービスを構築したいと思います。ファイルのアップロードに関しては、標準的な手順と最も費用対効果の高いソリューションが何であるか不思議です。S3に直接アップロードするか、EC2経由でアップロードしますか?

  1. クライアント> S3::私は(AWS SDKで)直接S3にiPhoneからファイルをアップロード
  2. クライアント> EC2> S3:私は、ファイルをアップロードする私の知る限り見ることができるように、2つの可能性があります

(このpostで詳述)私のサーバー(ジャンゴを実行しているEC2)にして、サーバはS3にファイルをアップロードし、私はどのような方法でファイルを修正することを計画していませんよ。私はエントリを追加するためにデータベースに伝える必要があります。ですから、ファイルClient> S3をアップロードする場合は、データベースエントリを行うためにサーバに接続する必要があります。

It seems EC2> S3と同じように、2つが同じ領域にある限り、コストはかかりません。

ファイルアップロードの実装を開始する前に、長所と短所が何であるかお聞きしたいと思います。

答えて

15

私は間違いなくスケーラビリティ上の理由からS3を使用します。 S3とEC2の間のデータは高速で安価ですが、アップロードは長時間実行され、通常のウェブリクエストとは異なります。したがって、EC2インスタンスにNICが飽和する可能性があります。

GUIDをクライアントに返し、GUIDに設定されたキーとContent-Typeを適切に設定してS3にアップロードします。次に、Webサービス/ Ajaxエンドポイントを呼び出して、アップロードが完了した後にGUIDキーを持つDBレコードを作成します。

+0

ありがとうございます。ですから、私があなたを正しく理解していれば、EC2を通してこれを行うことの本当の利点はありません。 (1)GUIDをクライアントに返すこと、(2)アップロードクライアント> S3を実行すること、(3)EC2に接続してデータベースのエントリを行うことに少し畳み込まれているとは思わないでしょうか?また、ステップ1の前に画像を実際にアップロードできるかどうかを確認する必要があるので、ステップ0はEC2に接続してファイルがすでに存在するかどうかを確認することです。 –

+1

はい、それは少し複雑ですが、私はあなたのアプリを将来的に証明し、スケ​​ーラビリティを不可欠にするという観点から言います。それ以外の場合は、EC2をS3のプロキシとして使用します。 S3は無限にスケーラブルなストレージサービスです。なぜその前にボトルネックを置くのですか? – reach4thelasers

+0

ありがとう!だから明確にする:私がS3に直接アップロードする場合、私はチャンクでsuffをアップロードする問題はなく、EC2インスタンスのメモリを心配する必要はありませんか?それはS3がもう一つのインスタンスであるようなものです。大容量のハードドライブであり、物を保管してアップロードを受け入れる以外の何もありません。だから私は実際にEC2インスタンスを通過し、他のこと(データベース管理など)を行うことができる間にアップロードするためにEC2リソースを無駄にするのは賢明ではないでしょう。 –

関連する問題