5

だから私は、ユーザーがアップロードしたビデオを提供するウェブサイトに取り組んでおり、すべてのインフラストラクチャは Amazon にあります。私は良い解決策を見つけようとしています。これが私が考えていることです

  1. PHP を使用して、EBS ボリュームへのファイルのアップロードを処理する EC2 インスタントを用意する
  2. 動画ファイルを S3 に転送する
  3. Amazon Elastic Transcoder でビデオ ファイルを S3 から適切な形式に変換し、S3 に保存します。
  4. CloudFront を使用して、変換された動画ファイルを公開する

まず、これについてどう思いますか?同じかそれ以上を達成する簡単な方法はありますか?

第二に、現在の私の主な問題はファイルを S3 に転送することです。これを行うために s3fs を試しましたが、大きなファイル転送であらゆる種類の奇妙な問題が発生したため、s3fs をあきらめました。

S3 から EC2への最速/最良の方法でデータをコピーするには? 誰かが EBS ボリュームの使用を提案しましたが、EBS をマウントしてから S3 上の同じデータにもアクセスできるかどうかはわかりません。

どんな助けでも大歓迎です

4

2 に答える 2

4

ファイルを S3 に転送するには、既に PHP でコーディングしているため、Amazon が提供する PHP ライブラリを調べて、Amazon のサービスに接続する必要があります。インスタンスにマウントされるファイルシステムベースのアプローチを使用することは、S3 への接続が必要以上に頻繁にダウンするため、最適ではありません。私は知っています、私は試しました。

しかし、一般的に、インスタンスでファイルを「キャッチ」してから S3 にプッシュするアプローチは適切です。ファイルが S3 に到達するまで、ファイルへの参照をデータベースに保存しないように注意する必要があります。そうしないと、ロード バランサーの背後で複数のインスタンスを実行することを選択した場合に、スケーラビリティの問題が発生します。

トランスコーディングに関しては、Amazon Transcoding サービスはかなり新しいため、経験はありませんが、Zencoder を強くお勧めします。ちなみに、これは AWS で実行され、高速かつ安価であり、AET に期待されている方法で動作します。S3 ファイルを指定し、トランスコードされたバリアント、サムネイルなどを書き込む場所を指定します。

お役に立てれば。

于 2013-03-01T21:48:37.483 に答える
2

これには EBS は必要ありません。

アップロードされたデータを EC2 エフェメラル ドライブに書き込んでから S3 にプッシュするか、データを S3 に直接ストリーミングすることができます。

エフェメラル ドライブ アプローチを使用する場合、virt が停止した場合にデータが失われるリスクがありますが、全体として、可動部分が少ないという単純さにはおそらく価値があります。

S3 にデータを直接ストリーミングすることは、私がやろうとしていることです。ディスク (ローカルまたは EBS) への書き込みの手順全体が削除され、アプリが簡素化されます。

このようなシステムを設計するとしたら、次のようになります。

  1. リスト項目
  2. Elastic Beanstalk によるフロントエンドのスケールアウト
  3. アプリケーションによって S3 に直接ストリーミングされるデータ
  4. 完了したものと進行中のものを追跡する RDS または DynamoDB テーブル。
于 2013-05-06T22:59:25.173 に答える