本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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: !Ref logicalName
Version: !GetAtt logicalName
.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