AWS CloudFormation - AWS での DevOps の概要

AWS CloudFormation

AWS CloudFormation は、デベロッパーが予測可能な方法で指定順序で AWS リソースを構築できるサービスです。リソースは、JSON (JavaScript Object Notation) 形式または YAML (Yet Another Markup Language) 形式を使用してテキストファイルに書き込まれます。テンプレートには、作成および管理するリソースのタイプに応じて、特定の構文と構造が必要になります。AWS Cloud9 など、任意のコードエディタを使用して JSON または YAML でリソースを記述し、バージョン管理システムにチェックインすると、指定したサービスが、安全かつ再現可能な方法で CloudFormation によって構築されます。

CloudFormation テンプレートはスタックとして AWS 環境にデプロイされます。スタックは、AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、または AWS CloudFormation API を使用して管理できます。スタックで実行中のリソースについて変更を加える必要がある場合は、スタックを更新します。リソースに変更を加える前に、変更セットを生成できます。変更セットとは、変更案のサマリーです。変更セットを使用すると、実行中のリソース (特に重要なリソース) で変更によって生じる可能性のある影響を、変更の実施前に確認できます。


        図 1

図 1 - AWS CloudFormation では 1 つのテンプレートワークフローから環境 (スタック) 全体を作成

1 つのテンプレートを使用して環境全体を作成および更新することも、別のテンプレートを使用して環境内で複数のレイヤーを管理することもできます。これによってテンプレートをモジュール化することが可能になり、多くの組織にとって重要なガバナンスのレイヤーも提供されます。

コンソールでスタックを作成または更新すると、設定のステータスを示すイベントが表示されます。エラーが発生した場合、デフォルトではスタックが前の状態にロールバックされます。イベントに関する通知は Amazon Simple Notification Service (Amazon SNS) によって処理されます。例えば、Amazon SNS を使用してスタックの作成と削除の進行状況を E メールで追跡し、プログラムによって他のプロセスと統合することもできます。

AWS CloudFormation を使用すると、AWS リソースのコレクションを簡単に整理およびデプロイできます。スタックを設定する際に、依存関係を記述することも、特殊なパラメータを渡すこともできます。

CloudFormation テンプレートを使用すると、Amazon S3、Auto Scaling、Amazon CloudFront、Amazon DynamoDB、Amazon EC2、Amazon ElastiCache、AWS Elastic Beanstalk、Elastic Load Balancing、IAM、AWS OpsWorks、Amazon VPC など、幅広い AWS サービスと連携できます。サポートされているリソースの最新リストについては、「AWS リソースおよびプロパティタイプのリファレンス」を参照してください。