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 のインスタンスの割合を指定します。0
~100
の値を指定できます。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 リポジトリ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