CreationPolicy 属性 - AWS CloudFormation

CreationPolicy 属性

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

作成ポリシーは、CloudFormation が関連するリソースを作成するときのみ実行されます。現在、作成ポリシーをサポートしているリソースは CloudFormation のみです。

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

AppStream 2.0 作成ポリシー

作成ポリシーに対する Amazon AppStream 構成。

構文

JSON

{ "CreationPolicy": { "StartFleet": { "Type": "Boolean" } } }

YAML

CreationPolicy: StartFleet: Type: Boolean
StartFleet

指定されたフリートを起動します。

必須: いいえ

Amazon EC2 Auto Scaling 作成プロパティ

作成ポリシーに対する Amazon EC2 Auto Scaling 設定。

構文

JSON

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

YAML

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

Amazon EC2 Auto Scaling 作成プロパティ

作成ポリシーに対する Amazon EC2 Auto Scaling 設定。

AutoScalingCreationPolicy

新しい Amazon EC2 Auto Scaling グループには、グループのステータスを CREATE_COMPLETE に設定する前に成功を通知する必要があるインスタンスの数を指定します。

MinSuccessfulInstancesPercent

グループのステータスを CREATE_COMPLETE に設定する前に成功を通知する必要がある Amazon EC2 Auto Scaling のインスタンスの割合を指定します。0100の値を指定できます。CloudFormation は、10% 単位で四捨五入されます。例えば、成功の最小割合が 50 の 5 つのインスタンスを作成する場合、3 つのインスタンスが成功のシグナルを送信する必要があります。Timeout プロパティで指定された時間内にインスタンスから信号が送信されない場合、CloudFormation ではインスタンスが作成されなかったものとみなされます。

デフォルト: 100

タイプ: 整数

必須: いいえ

ResourceSignal

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

Count

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

デフォルト: 1

タイプ: 整数

必須: いいえ

Timeout

CloudFormation が Count プロパティで指定された数のシグナルを待つ時間です。タイムアウト時間は、CloudFormation がリソースの安定化処理を完了した後から開始します。タイムアウト時間は、指定した時間よりも早く切れることはありませんが、若干遅れる可能性があります。指定できる最大時間は 12 時間です。

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

Default: PT5M (5 分)

タイプ: 文字列

必須: いいえ

Auto Scaling グループ

以下の例では、Amazon EC2 Auto Scaling グループへの作成ポリシーの追加方法を説明します。この作成ポリシーは 3 個の成功シグナルを要求し 15 分後にタイムアウトします。インスタンス作成プロセスが正常に完了したときにシグナルを送信するために cfn-signal ヘルパースクリプトを使用します。

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

JSON

"AutoScalingGroup": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Properties": { "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "MinSize": "1", "MaxSize": "4" }, "CreationPolicy": { "ResourceSignal": { "Count": "3", "Timeout": "PT15M" } } }

YAML

AutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MinSize: '1' MaxSize: '4' CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M

WaitCondition

次の例は、Amazon EC2 を超えて CloudFormation リソースの待機条件に作成ポリシーを追加する方法を示しています。

WaitCondition リソースにシグナルを送信するには、SignalResource API を使用します。この API は、CreationPolicy を使用して設定した 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