AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

CreationPolicy 属性

CreationPolicy 属性をリソースに関連付けて、AWS CloudFormation が指定数の成功シグナルを受信するかまたはタイムアウト期間が超過するまでは、ステータスが作成完了にならないようにします。リソースにシグナルを送信するには、cfn-signal ヘルパースクリプトまたは SignalResource API を使用できます。送信されたシグナル数を追跡できるように、AWS CloudFormation は有効なシグナルをスタックイベントに発行します。

作成ポリシーは、AWS CloudFormation が関連するリソースを作成するときのみ実行されます。現在、作成ポリシーをサポートしている AWS CloudFormation リソースは AWS::AutoScaling::AutoScalingGroupAWS::EC2::Instance、および AWS::CloudFormation::WaitCondition のみです。

CreationPolicy 属性を使用して、スタックの作成が進む前に、リソース設定アクションで待機します。たとえば、EC2 インスタンスにソフトウェアアプリケーションをインストールして設定する際に、先に進む前にこのアプリケーションを起動して実行する場合があります。このような場合、インスタンスに CreationPolicy 属性を追加すると、アプリケーションがインストールされ設定された後に、インスタンスに成功シグナルを送信します。詳細例については、「AWS CloudFormation による Amazon EC2 へのアプリケーションのデプロイ」を参照してください。

構文

JSON

"CreationPolicy" : { "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : Integer }, "ResourceSignal" : { "Count" : Integer, "Timeout" : String } }

YAML

CreationPolicy: AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: Integer ResourceSignal: Count: Integer Timeout: String

CreationPolicy のプロパティ

AutoScalingCreationPolicy

Auto Scaling グループの置き換え更新では、いくつのインスタンスが成功の信号を送信すると更新を続行するかを指定します。

MinSuccessfulInstancesPercent

更新を成功させるために成功のシグナルを送信する必要があるインスタンスの、Auto Scaling 置き換え更新における割合を指定します。0100の値を指定できます。AWS CloudFormation は、10% ごとに丸められます。たとえば、成功の最小割合が 50 の 5 つのインスタンスを更新する場合、3 つのインスタンスが成功のシグナルを送信する必要があります。Timeout プロパティで指定された時間内にインスタンスから信号が送信されない場合、AWS CloudFormation ではインスタンスが作成されなかったとみなされます。

デフォルト: 100

Type: Integer

Required: No

ResourceSignal

AWS CloudFormation で関連リソースを作成する際に、必要な成功シグナル数と AWS CloudFormation が信号を待機する時間を設定します。

Count

AWS CloudFormation がリソースステータスを CREATE_COMPLETE に設定する前に必要な成功シグナルの受信数です。リソースが失敗シグナルを受信するか、またはタイムアウト期間が時間切れになるまでに指定数のシグナルを受信しなかった場合、リソースの作成は失敗となり AWS CloudFormation はスタックをロールバックします。

デフォルト: 1

Type: Integer

Required: No

Timeout

AWS CloudFormation が Count プロパティで指定された数のシグナルを待つ時間です。タイムアウト期間は AWS CloudFormation がリソース作成を開始した後に始まり、タイムアウトは指定した時間より早くはなりませんが、わずかに遅くなる場合があります。指定できる最大時間は 12 時間です。

値は、ISO8601 日付/時刻形式である必要があります。「PT#H#M#S」形式で、「#」はそれぞれ、時間数、分数、秒数を表します。最良の結果を得るには、インスタンスが稼働を開始するのに十分な時間を指定します。タイムアウトが短いと、ロールバックが発生する場合があります。

デフォルト: PT5M (5 分)

Type: String

Required: No

Auto Scaling グループ

以下の例では、Auto Scaling グループへの作成ポリシーの追加方法を説明します。この作成ポリシーは 3 個の成功シグナルを要求し 15 分後にタイムアウトします。

インスタンスが Elastic Load Balancing ヘルスチェックに成功してから成功シグナルを送信する場合は、cfn-init ヘルパースクリプトを使用してヘルスチェック検証を追加します。 例については、Auto Scaling ローリング更新のサンプルテンプレートで verify_instance_health コマンドを参照してください。

JSON

"AutoScalingGroup": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Properties": { "AvailabilityZones": { "Fn::GetAZs": "" }, "LaunchConfigurationName": { "Ref": "LaunchConfig" }, "DesiredCapacity": "3", "MinSize": "1", "MaxSize": "4" }, "CreationPolicy": { "ResourceSignal": { "Count": "3", "Timeout": "PT15M" } }, "UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : "true" }, "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "2", "PauseTime" : "PT1M", "WaitOnResourceSignals" : "true" } } }, "LaunchConfig": { "Type": "AWS::AutoScaling::LaunchConfiguration", "Properties": { "ImageId": "ami-16d18a7e", "InstanceType": "t2.micro", "UserData": { "Fn::Base64": { "Fn::Join" : [ "", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" }, " --resource AutoScalingGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ] ] } } } }

YAML

AutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: '' LaunchConfigurationName: Ref: LaunchConfig DesiredCapacity: '3' MinSize: '1' MaxSize: '4' CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' PauseTime: PT1M WaitOnResourceSignals: 'true' LaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-16d18a7e InstanceType: t2.micro UserData: "Fn::Base64": !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource AutoScalingGroup --region ${AWS::Region}

WaitCondition

以下の例は、待機条件への作成ポリシーの追加方法について説明します。

JSON

"WaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "CreationPolicy" : { "ResourceSignal" : { "Timeout" : "PT15M", "Count" : "5" } } }

YAML

WaitCondition: Type: AWS::CloudFormation::WaitCondition CreationPolicy: ResourceSignal: Timeout: PT15M Count: 5

このページの内容: