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

AWS CloudFormation テンプレートスニペット

ネストされたスタック

テンプレートにおけるスタックのネスト

このサンプルテンプレートには、myStack というスタックリソースがネストされています。AWS CloudFormation でテンプレートからスタックを作成するときに、myStack が作成されます。myStack のテンプレートは TemplateURL プロパティで指定されています。 出力値 StackRefmyStack のスタック ID を、OutputFromNestedStackmyStack リソース内からの出力値 BucketName を返します。Outputs.nestedstackoutputname 形式は、ネストされたスタックからの出力値を指定する目的で予約されており、上位のテンプレート内の任意の場所で使用できます。

詳細については、「AWS::CloudFormation::Stack」を参照してください。

JSON

Copy
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myStack" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template", "TimeoutInMinutes" : "60" } } }, "Outputs": { "StackRef": {"Value": { "Ref" : "myStack"}}, "OutputFromNestedStack" : { "Value" : { "Fn::GetAtt" : [ "myStack", "Outputs.BucketName" ] } } } }

YAML

Copy
AWSTemplateFormatVersion: '2010-09-09' Resources: myStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template TimeoutInMinutes: '60' Outputs: StackRef: Value: !Ref myStack OutputFromNestedStack: Value: !GetAtt myStack.Outputs.BucketName

テンプレートでの入力パラメーターによるスタックのネスト

このサンプルテンプレートには、入力パラメーターを指定するスタックリソースが存在します。AWS CloudFormation は、このテンプレートからスタックを作成する際、Parameters プロパティ内で宣言されている値ペアを、myStackWithParams スタックの作成用テンプレートの入力パラメーターとして使用します。この例では、InstanceType パラメーターと KeyName パラメーターを指定しています。

詳細については、「AWS::CloudFormation::Stack」を参照してください。

JSON

Copy
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myStackWithParams" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template", "Parameters" : { "InstanceType" : "t1.micro", "KeyName" : "mykey" } } } } }

YAML

Copy
AWSTemplateFormatVersion: '2010-09-09' Resources: myStackWithParams: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template Parameters: InstanceType: t1.micro KeyName: mykey

待機条件

Amazon EC2 インスタンスでの待機条件の使用

重要

Amazon EC2 および Auto Scaling リソースについては、待機条件ではなく CreationPolicy 属性を使用することをお勧めします。CreationPolicy 属性をこれらのリソースに追加し、インスタンス作成プロセスが正常に完了したときにシグナルを送信するために cfn-signal ヘルパースクリプトを使用します。

作成ポリシーを使用できない場合は、待機条件を伴う Amazon EC2 インスタンスを宣言する次のテンプレート例を参照してください。待機条件 myWaitCondition では、myWaitConditionHandle を伝達手段に用いるとともに、Amazon EC2 インスタンスリソースが作成された後で待機条件をトリガーする指定を DependsOn 属性で行っています。また、Timeout プロパティを使用して、待機条件の持続時間を 4500 秒に設定しています。加えて、待機条件へのシグナルの働きをする署名付き URL を、Ec2Instance リソースの UserData プロパティで Amazon EC2 インスタンスに渡しています。Amazon EC2 インスタンスで動作するアプリケーションまたはスクリプトはこの署名付き URL を取得し、成功または失敗を待機条件に伝達するための手段とします。ただし、待機条件にシグナルを送る側のアプリケーションまたはスクリプトは自分で作成する必要があります。待機条件シグナルから戻されたデータは、出力値である ApplicationData に格納されます。

詳細については、「テンプレートでの待機条件の作成」、「AWS::CloudFormation::WaitCondition」、および「AWS::CloudFormation::WaitConditionHandle」を参照してください。

JSON

Copy
{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-76f0061f" }, "us-west-1" : { "AMI" : "ami-655a0a20" }, "eu-west-1" : { "AMI" : "ami-7fd4e10b" }, "ap-northeast-1" : { "AMI" : "ami-8e08a38f" }, "ap-southeast-1" : { "AMI" : "ami-72621c20" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : {"Ref" : "myWaitHandle"}}, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} } }, "myWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle", "Properties" : { } }, "myWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "Ec2Instance", "Properties" : { "Handle" : { "Ref" : "myWaitHandle" }, "Timeout" : "4500" } } }, "Outputs" : { "ApplicationData" : { "Value" : { "Fn::GetAtt" : [ "myWaitCondition", "Data" ]}, "Description" : "The data passed back as part of signalling the WaitCondition." } } }

YAML

Copy
AWSTemplateFormatVersion: '2010-09-09' Mappings: RegionMap: us-east-1: AMI: ami-76f0061f us-west-1: AMI: ami-655a0a20 eu-west-1: AMI: ami-7fd4e10b ap-northeast-1: AMI: ami-8e08a38f ap-southeast-1: AMI: ami-72621c20 Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: !Ref myWaitHandle ImageId: Fn::FindInMap: - RegionMap - Ref: AWS::Region - AMI myWaitHandle: Type: AWS::CloudFormation::WaitConditionHandle Properties: {} myWaitCondition: Type: AWS::CloudFormation::WaitCondition DependsOn: Ec2Instance Properties: Handle: !Ref myWaitHandle Timeout: '4500' Outputs: ApplicationData: Value: !GetAtt myWaitCondition.Data Description: The data passed back as part of signalling the WaitCondition.

Curl を使用した待機条件への伝達

この例は、成功を待機条件に伝達する Curl コマンドラインを示します。

Copy
curl -T /tmp/a "https://cloudformation-waitcondition-test.s3.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A034017226601%3Astack%2Fstack-gosar-20110427004224-test-stack-with-WaitCondition--VEYW%2Fe498ce60-70a1-11e0-81a7-5081d0136786%2FmyWaitConditionHandle?Expires=1303976584&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=ik1twT6hpS4cgNAw7wyOoRejVoo%3D"

ファイル /tmp/a には、次の JSON 構造が格納されます。

Copy
{ "Status" : "SUCCESS", "Reason" : "Configuration Complete", "UniqueId" : "ID1234", "Data" : "Application has completed configuration." }

この例も、同じ成功シグナルを送信する Curl コマンドラインですが、コマンドラインのパラメーターとして JSON を送信しています。

Copy
curl -X PUT -H 'Content-Type:' --data-binary '{"Status" : "SUCCESS","Reason" : "Configuration Complete","UniqueId" : "ID1234","Data" : "Application has completed configuration."}' "https://cloudformation-waitcondition-test.s3.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A034017226601%3Astack%2Fstack-gosar-20110427004224-test-stack-with-WaitCondition--VEYW%2Fe498ce60-70a1-11e0-81a7-5081d0136786%2FmyWaitConditionHandle?Expires=1303976584&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=ik1twT6hpS4cgNAw7wyOoRejVoo%3D"

このページの内容: