CreationPolicy
属性
将 CreationPolicy
属性与资源相关联,以防止在 Amazon 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 取整到最接近的十分位值。例如,如果您创建五个实例,最小成功百分比为50
,则必须有三个实例发送成功信号才行。如果某个实例在Timeout
属性指定的时间里未发送信号,CloudFormation 假定该实例未创建。默认值:
100
类型:整数
必需:否
ResourceSignal
-
CloudFormation 创建关联的资源时,配置所需的成功信号数以及 CloudFormation 等待这些信号的时间长度。
Count
-
CloudFormation 在将资源状态设置为
CREATE_COMPLETE
之前必须收到的成功信号的数目。如果资源在超时期限过期之前收到失败信号或未收到指定数目的信号,则资源创建将失败并且 CloudFormation 将回滚堆栈。默认值:
1
类型:整数
必需:否
Timeout
-
CloudFormation 等待
Count
属性中指定数目的信号的时长。超时期限自 CloudFormation 稳定资源后开始,并且超时期限过期时间不会早于您指定的时间,但会在您指定时间后的很短时间内发生。您可指定的最长时间为 12 小时。该值必须采用以下形式的 ISO8601 持续时间格式
: PT
,其中各个#
H#
M#
S#
分别表示小时数、分钟数和秒数。为获得最佳结果,请指定足够长的时间段,以便实例可以正常启动和运行。更短的超时可导致回滚。默认值:
PT5M
(5 分钟)类型:字符串
必需:否
示例
自动扩缩组
以下示例介绍如何将创建策略添加到 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: !ReflogicalName
Version: !GetAttlogicalName
.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