ラボの概要
このラボでは、ストレージとして Amazon Simple Storage Service (Amazon S3) を、データベースとして Amazon DynamoDB を、ウェブアプリケーションをホストするために Amazon Elastic Compute Cloud (Amazon EC2) を使用して写真共有ウェブサイトをデプロイする方法を学習します。
このラボでは、コンテンツの閲覧やアップロードといった基本的な機能を提供する、システムの主要なアーキテクチャを作成します。このラボの目的上、メディアコンテンツは画像のみを使用しますが、ここで説明する概念は、ドキュメント (PDF、RTF、プレゼンテーションなど)、音楽、ビデオなどの他の種類のメディアにも適用できます。また、ユーザーが画像を参照および保存するためのウェブインターフェイスも提供されます。
目標
このラボを修了すると、次のことができるようになります。
- メディアファイルを保存する新しい Amazon S3 バケットを作成する
- メディアファイルのメタデータを保存する DynamoDB テーブルを作成する
- 新しい EC2 インスタンスを起動してウェブサーバーを実行する
- デプロイをテストする
ラボの前提条件
このラボを完了するには、AWS マネジメントコンソールの基本的なナビゲーションに関する知識が必要です。また、テキストエディタを使用したスクリプトの編集に慣れている必要があります。
所要時間
このラボの所要時間は約 60 分です。
アイコンキー
このラボでは、さまざまな種類の手順と注記への注意を促すため、各種アイコンが使用されています。以下のリストは、各アイコンの目的を説明したものです。
- 注意: ヒントや重要なガイダンスを表す。
ソリューションの概要
メディアストレージ
画像は Amazon Elastic Block Store ボリュームに保存できますが、あらかじめ容量をプロビジョニングし、ボリュームを追加してこのストレージレイヤーの拡張操作を管理する必要があります。また、HTTP を介してコンテンツを提供するには、これらのボリュームを EC2 インスタンスにアタッチする必要があります。データが複製されておらず他のインスタンスから提供されていない場合は、これによりシステム内に単一障害点が発生します。
より優れた方法は、Amazon S3 をメディアファイルのストレージリポジトリとして使用することです。Amazon S3 は、耐久性の高いデータと、HTTP を通じてコンテンツを直接提供できる機能を提供します。1 つの Amazon S3 バケット内に保存できるオブジェクトの数に制限はありません。また、使用するバケットの数によってパフォーマンスに差が出ることもありません。すべてのオブジェクトを 1 つのバケットに保存することも、複数のバケットに分けて整理することもできます。
このラボでは、次のソリューションを構築します。
ユーザーが画像をアップロードすると、ウェブサーバーがそれを受け取り、サムネイルを作成します。その後、画像とサムネイルを S3 バケットにアップロードし、画像のメタデータを DynamoDB テーブルに挿入します。
Amazon S3 と DynamoDB はいずれもスケーラブルで耐障害性に優れたシステムですが、単一の EC2 インスタンスで実行されているウェブサーバーは明らかに単一障害点 (ウェブアプリケーションに障害が発生すると、システムにアクセスできなくなり、回復不能となる) であり、ボトルネック (着信リクエストの重大な負荷により、システムが使用不可能になる可能性がある) です。
ラボのシナリオで使用される各サービスの概要を以下に紹介します。
注意: これらの AWS サービスを使い慣れている場合は、サービスの紹介をスキップして、直接ラボを開始するセクションに飛んでも構いません。
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) は、クラウド内で規模を変更できるコンピューティング性能を提供するウェブサービスです。ウェブスケールのコンピューティングを開発者が簡単に利用できるように設計されています。 Amazon EC2 のシンプルなウェブサービスインターフェイスを通して、必要なキャパシティーを取得し、簡単に設定することができます。使用するコンピューティングリソースのあらゆる面をお客様自身でコントロールしながら、実績ある Amazon のコンピューティング環境で実行できます。Amazon EC2 では、新しいサーバーインスタンスの取得と起動に要する時間が分単位にまで短縮されるため、容量のスケールアップもダウンも、コンピューティング要件の変化に合わせてすばやく実行できます。また、Amazon EC2 はコンピューティングの経済性をも変革します。お支払いいただく料金は、実際に使用した容量の分のみです。
Amazon EC2 を使用すれば、何時間も何日も待たされることなく、数分でキャパシティーを増減できます。1 個から数百個、または数千個のサーバーインスタンスさえ、同時に実行できます。もちろん、これはすべてウェブサービス API で制御されるため、アプリケーションは必要に応じて自動的にスケールの拡張や縮小を行うことができます。
インスタンスはすべて自分で制御できます。各インスタンスへのルートアクセス権限が付与され、他のマシンと同じようにインスタンスを操作できます。インスタンスを停止してもブートパーティション上のデータは保持することができ、その後ウェブサービス API 経由で同一のインスタンスを再起動することができます。ウェブサービス API を使用すれば、リモートでインスタンスを再起動できます。また、インスタンスのコンソール出力も操作できます。
インスタンスタイプ、オペレーティングシステム、ソフトウェアパッケージの種類を選べます。Amazon EC2 では、お客様が選択したオペレーティングシステムやアプリケーションに合わせて、最適なメモリ、CPU、インスタンスストレージ、ブートパーティションサイズの構成を選択できます。例えば、オペレーティングシステムの選択肢には、数多くの Linux ディストリビューション、Microsoft Windows Server が含まれています。
Amazon EC2 の詳細については、https://aws.amazon.com/ec2/ を参照してください。
DynamoDB
DynamoDB は高速な完全マネージド型 NoSQL データベースサービスで、簡単かつコスト効率よく、任意の量のデータを保存および取得し、任意のレベルのリクエストトラフィックを処理できます。スループットとミリ秒で 1 桁台のレイテンシーが保証されており、ゲーム、広告、モバイル、他の多くのアプリケーションに最適です。
DynamoDB は、API と使いやすいマネジメントコンソールによりシームレスなスループットとストレージのスケーリングを実現するため、ニーズに合わせて容易に拡大または縮小することが可能です。多くのお客様が、ボタンをクリックするだけの簡単操作で DynamoDB デプロイメントをわずか数分間で作成しました。このデプロイメントは、年間数兆回に上るデータベースリクエストを処理できます。
DynamoDB のテーブルには固定されたスキーマはなく、項目のそれぞれが、異なる数の属性を持てるようになっています。複数のデータ型を使用して、豊富なデータモデルを利用できます。セカンダリインデックスによって、パフォーマンスに影響を与えることなく、実行可能なクエリの柔軟性が高まります。
SSD ストレージと自動 3 方向レプリケーションによって、パフォーマンス、信頼性、セキュリティが組み込まれています。Amazon DynamoDB では、実績のある暗号化方法を使用してユーザーを安全に認証し、データへの不正アクセスを防ぎます。
Amazon DynamoDB の詳細については、https://aws.amazon.com/dynamodb/ を参照してください。
Amazon S3
Amazon S3 は、インターネット用のストレージサービスです。ウェブスケールのコンピューティングを開発者が簡単に利用できるように設計されています。
Amazon S3 にはシンプルなウェブサービスインターフェイスが用意されており、いつでもウェブのどこからでも容量に関係なくデータを保存/取得できます。高度にスケーラブルで信頼性が高く、安全、高速かつ低コストのインフラストラクチャをあらゆるデベロッパーが利用できます。このインフラストラクチャは、Amazon が世界各地にある自社のウェブサイトを運用するために使用しているのと同じものです。このサービスが目指しているのは、スケールメリットを最大化することと、そのメリットをデベロッパーに活用していただくことです。
Amazon S3 は、高品質なインターネットベースのストレージを普及させようという考えに基づいています。これを利用することで、開発者はデータの保存方法 (安全性、容量など) について悩む必要がなくなります。現行のストレージサーバーを維持およびスケーリングするコストのほか、自身がストレージソリューションをセットアップするための事前の出費も不要です。Amazon S3 の機能性はシンプルで堅牢です。いかなる容量のデータも安価で、かつ安全に保存し、必要なときにいつでもデータを使用することができます。Amazon S3 があれば、開発者はデータの保存方法をあれこれ考えずに自分の作業に集中できます。
Amazon S3 の詳細については、http://aws.amazon.com/s3/ を参照してください。