本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
-
指定 Amazon EC2 Auto Scaling 群組中,在將群組狀態設定為
CREATE_COMPLETE
之前必須傳送成功訊號的執行個體數目。您可指定介從0
到100
之間的值。CloudFormation 會四捨五入至最接近的 10%。例如,如果建立 5 個執行個體,最低成功百分比為50
,則必須有 3 個執行個體傳送成功訊號。如果執行個體未在Timeout
屬性指定的時間內傳送訊號,CloudFormation 將假設執行個體未建立。預設:
100
類型:整數
必要:否
ResourceSignal
-
當 CloudFormation 建立關聯資源時,設定必要的成功訊號數及 CloudFormation 等待那些訊號的時間長度。
Count
-
CloudFormation 在將資源狀態設為
CREATE_COMPLETE
時必須接收到的成功訊號數。若資源接收到失敗訊號,或是無法在逾時期間過期前接收到指定數目的訊號,則資源建立會失敗,CloudFormation 會復原堆疊。預設:
1
類型:整數
必要:否
Timeout
-
CloudFormation 等待
Count
屬性中指定訊號數的時間長度。逾時期間會在 CloudFormation 穩定資源後開始,且逾時的過期時間不會早於您指定的時間,但可能會在之後不久發生。您可以指定的時間上限是 12 小時。值的格式必須為 ISO8601 持續時間格式
,其形式為: PT
,其中每個#
H#
M#
S#
分別為小時數、分鐘數及秒數。如需取得最佳結果,請指定可讓您的執行個體擁有充裕時間啟動及執行的時間期間。較短的逾時可能會導致復原。預設:
PT5M
(5 分鐘)類型:字串
必要:否
範例
Auto Scaling 群組
以下範例說明如何將建立政策新增至 Amazon EC2 Auto Scaling 群組。建立政策需要三個成功訊號,並會在 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: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber MinSize: '1' MaxSize: '4' CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M
WaitCondition
下列範例示範如何將建立政策新增至 Amazon EC2 以外 CloudFormation 資源的等待條件。
若要發出WaitCondition
資源訊號,請使用 SignalResource API。此 API 旨在使用您使用 設定WaitCondition
的資源CreationPolicy
。
JSON
"WaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "CreationPolicy" : { "ResourceSignal" : { "Timeout" : "PT15M", "Count" : "5" } } }
YAML
WaitCondition: Type: AWS::CloudFormation::WaitCondition CreationPolicy: ResourceSignal: Timeout: PT15M Count: 5