CDP:Direct Object Uploadパターン
提供:AWS-CloudDesignPattern
アップロード手順の簡略化
目次 |
解決したい課題
写真や動画の共有サイトでは、多数のユーザーからサイズの大きいデータがアップロードされる。アップロード処理はサーバー側の負荷(特にネットワーク負荷)が高く、ある程度の規模のサイトでも、アップロード専用の仮想サーバーが必要になるケースがある。
クラウドでの解決/パターンの説明
アップロード処理をインターネットストレージに任せる。つまり、クライアントから、仮想サーバーを経由することなく、インターネットストレージに直接アップロードする。これにより、Webサーバーでアップロード処理の負荷を考えなくてもよくなる。
実装
- Webサーバー(EC2)上で、S3へのアップロードを行うHTMLのフォームを生成する。
- アップロードフォームを使用し、ユーザー側からS3へ直接ファイルをアップロードする。
- S3にファイル転送を終了した後にフォームに指定してあるURLへリダイレクトされるので、リダイレクト先のサーバーでアップロード終了の確認処理を行う。
構造
利点
- アップロード用のEC2インスタンスを用意する手間とコストが不要になる。
- S3のスケーラビリティーを生かし、アップロード処理の負荷を分散できる。
- S3にデータがアップロードされるので、EC2インスタンス間での共有が容易になる。
注意点
- S3と連携する実装が必要となるので、EC2のみを使用したアップロードに比べて仕組みが複雑になる。
その他
- HTMLフォームは手動で作成することも可能なため、S3だけでHTMLフォームの配布とアップロードを完結させることも可能。
- 認証したユーザのみがアップロード可能とするように、S3の署名付きURL機能を利用してセキュリティを高めることができる。[関連ブログ 1]
関連ブログ
- ↑ Amazon Simple Storage Service 開発者ガイド の「"署名付き URL を使用したオブジェクトのアップロード」( http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/PresignedUrlUploadObject.html )