メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS CloudFormation の概念

AWS CloudFormation を使用する際には、テンプレートスタックの作業を行います。テンプレートは、AWS リソースとそのプロパティを記述するために作成します。スタックを作成するたびに、AWS CloudFormation はテンプレートに記述されているリソースをプロビジョニングします。

テンプレート

AWS CloudFormation テンプレートは JSON または YAML 形式のテキストファイルです。これらのファイルは、.json.yaml.template.txt などの拡張子を使用して保存することができます。AWS CloudFormation はこれらのテンプレートを、AWS リソースを作成する際の設計図として使用します。たとえば、テンプレートには、インスタンスタイプ、AMI ID、ブロックデバイスマッピング、Amazon EC2 キーペアの名前など、Amazon EC2 インスタンスの情報を記述できます。スタックを作成する際には必ず、AWS CloudFormation がテンプレートの記述内容を作成するために使用するテンプレートも指定します。

たとえば、以下のテンプレートを指定してスタックを作成した場合、AWS CloudFormation はami-2f726546 AMI ID、t1.microインスタンスタイプ、testkeyキーペアの名前、および Amazon EBS ボリュームを持つインスタンスをプロビジョニングします。

例 JSON

Copy
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample template", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-2f726546", "InstanceType" : "t1.micro", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } } ] } } } }

例 YAML

Copy
AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-2f726546" InstanceType: t1.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

また単独のテンプレートに複数のリソースを指定し、これらのリソースが連携するように設定できます。たとえば、Elastic IP (EIP) を含み、Amazon EC2 インスタンスとの関連付けを持つように、上記のテンプレートを変更することができます。

例 JSON

Copy
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample template", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-2f726546", "InstanceType" : "t1.micro", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } } ] } }, "MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : {"Ref": "MyEC2Instance"} } } } }

例 YAML

Copy
AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-2f726546" InstanceType: t1.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: AWS::EC2::EIP Properties: InstanceId: !Ref MyEC2Instance

上記のテンプレートは単一の Amazon EC2 インスタンスについて記述したものですが、AWS CloudFormation テンプレートの追加機能により、複雑なリソースセットを構築して、それらのテンプレートを複数のコンテキストで再利用することができます。たとえば、AWS CloudFormation スタックを作成すると、値が指定されている入力パラメーターを追加できます。つまり、テンプレートではなくスタックを作成すると、インスタンスタイプなどの値を指定できるので、さまざまな状況でテンプレートを再利用しやすくなります。

テンプレートの作成や機能に関する詳細については、「テンプレートの分析」を参照してください。

特定のリソースを宣言する詳細については、AWS リソースプロパティタイプのリファレンス を参照してください。

AWS CloudFormation デザイナー で独自のテンプレートを設計するには、https://console.aws.amazon.com/cloudformation/designer を参照してください。

スタック

AWS CloudFormation を使用する際、関連リソースはスタックと呼ばれる単一のユニットとして管理します。スタックを作成、更新、削除することで、リソースのコレクションを作成、更新、削除します。スタック内のすべてのリソースは、スタックの AWS CloudFormation テンプレートで定義されます。Auto Scaling グループ、Elastic Load Balancing ロードバランサー、および Amazon Relational Database Service (Amazon RDS) データベースインスタンスを含むテンプレートを作成したとします。これらのリソースを作成するには、作成したテンプレートを送信することによってスタックを作成します。すると、AWS CloudFormation によってすべてのリソースがプロビジョニングされます。スタックの操作には、AWS CloudFormation コンソールAPI、またはAWS CLI を使用できます。

スタックの作成、更新、または削除の詳細については、スタックの操作を参照してください。

変更セット

スタックで実行中のリソースに変更を加える必要がある場合は、スタックを更新します。リソースに変更を加える前に、変更案の概要である変更セットを生成できます。変更セットで、変更が実行中のリソース、特に重要なリソースに与える可能性のある影響を、実装前に確認できます。

たとえば、Amazon RDS データベースインスタンスの名前を変更すると、AWS CloudFormation によって新しいデータベースが作成され、古いものは削除されます。古いデータベースのデータは、バックアップしていない限り、失われます。変更セットを生成すると、変更によってデータベースが置き換えられることがわかり、スタックを更新する前に対応策を立てることができます。詳細については、「変更セットを使用したスタックの更新」を参照してください。

このページの内容: