概要
本ラボでは、AWS CloudFormation で、Auto Scaling グループ、Amazon Elastic Compute Cloud (EC2) インスタンス、Elastic Load Balancing など、AWS の製品およびサービスを多数活用しながらウェブアプリケーションのプロビジョニングと更新を行う方法について学びます。
前半では、AWS CloudFormation を使用してシンプルなリソース (Amazon S3 バケット) を作成し、AWS CloudFormation スタックを削除するときやロールバックの最中に適用する、さまざまな保持ポリシーを確認します。
後半では、Amazon Linux インスタンスを使用して、シンプルな PHP ウェブアプリケーションをプロビジョンします。その後、AWS CloudFormation テンプレートを既存のアプリケーションに再適用してリソース属性 (Amazon EC2 インスタンスタイプなど) を変更する方法について、確認します。最後に、Auto Scaling の設定に基づき、ロードバランサーと Auto Scaling グループを追加します。
取り上げるトピック
本ラボを修了すると、次のことができるようになります。
- AWS CloudFormation を使用して Amazon Simple Storage Service (S3) バケットを作成する。
- Amazon Linux AMI を使用して、シンプルな PHP ウェブアプリケーションをプロビジョンする。
- AWS CloudFormation テンプレートを既存のアプリケーションに適用する。
- AWS CloudFormation を使用して既存のアプリケーションを変更する。
- AWS CloudFormation を使用して、IAM ロールと Elastic Load Balancing をアプリケーションに追加する。
技術知識の前提条件
本ラボを修了するには、テキストエディタでのスクリプト編集に熟練している必要があります。
AWS の他のサービス
ラボのユーザーに割り当てられた IAM Policy では、本ラボに含まれない AWS のサービスを使用することが禁じられています。場合によっては、ラボの設計上、意図的にこの制限を超えることもあります。このラボガイドで指定されていないサービスを使用したりアクションを実行したりすると、エラーが発生することがあります。
AWS CloudFormation を使用することで、デベロッパーやシステム管理者は、関連する AWS リソースのコレクションを容易に作成し管理することができ、規則的かつ予測可能なやり方でそれらをプロビジョンしたり更新したりできます。
AWS CloudFormation のサンプルテンプレートを使用するか独自のテンプレートを作成することで、アプリケーションの実行に必要な AWS リソースや、関連付けられた依存関係またはランタイムパラメータを記述できます。AWS のサービスをプロビジョンする順番を考えたり、依存関係が機能するように細かく注意したりする必要はありません。AWS CloudFormation が代わりに行います。AWS リソースをデプロイすると管理された予測可能な方法でそれらを修正したり更新したりできます。つまり、バージョン管理をソフトウェアの場合と同じ要領で AWS インフラストラクチャに適用できます。
ユーザーは、AWS マネジメントコンソール、AWS コマンドラインインターフェイス、API を使用して、テンプレートおよびそれに関連するリソースのコレクション (スタックと呼ばれる) をデプロイおよび更新できます。AWS CloudFormation は追加料金なしで利用できるため、支払いはアプリケーションを実行するために必要な AWS リソースの料金のみです。
AWS CloudFormation テンプレートとは、スタックを構成している AWS リソースの総称のことです。テンプレートは、JavaScript Object Notation (JSON) または YAML 形式のテキストファイルとして保存されます。これらはテキストファイルであるため、どのテキストエディタでも作成および編集が可能で、他のすべてのソースコードと共にソース管理システムで管理できます。
本ラボのテンプレートでは、AWS CloudFormation に解釈可能な YAML 構造を使用して、作成し設定する AWS リソースを宣言します。YAML 形式では、オブジェクトは、名前と値のペア、または名前のペアとして宣言されます。AWS CloudFormation テンプレートでは、次の 6 つの最上位オブジェクトを宣言できます。
- AWSTemplateFormatVersion (テンプレートフォーマットのバージョン)
- Description (説明)
- Parameters (パラメータ)
- Mappings (マッピング)
- Resources (リソース)
- Outputs (出力)
最上位オブジェクトで必要なのはリソースオブジェクトのみです。このオブジェクトは最低 1 つのリソースを宣言しなくてはなりません。本ラボでは、リソースオブジェクトのみを含む最も基本的なテンプレートから始めます。このオブジェクトには 1 つのリソース宣言が含まれます。
上記の各オブジェクトの定義については、オンラインドキュメント「テンプレートの分析」を参照してください。
アイコンキー
このラボでは、さまざまな種類の手順と注記への注意を促すため、各種アイコンが使用されています。以下のリストは、各アイコンの目的を説明したものです。
- 想定される出力: 出力のサンプルであり、コマンドまたは編集済みファイルの出力を確認するときに使用します。
- 注: 注意事項、ヒント、重要なガイダンスです。
- 追加情報: 詳細を確認できます。
- 検討: ここでは、少し時間を取ってそのコンセプトをどうすれば自分の環境に応用できるか考えたり、学習中のトピックについて議論したりします。
- コピー/貼り付け: 事前に作成された、コピー/貼り付けの必要があるスクリプトまたはファイルの内容を示すコードブロックです。コードブロックの一部のみをコピーすればよい場合は、番号が振られた TODO コメントがコードに付いています。