CreationPolicy 属性 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

CreationPolicy 属性

CreationPolicy 属性与资源相关联,以防止在 Amazon CloudFormation 收到指定数量的成功信号或超出超时期限之前进入“创建完成”状态。要向资源发出信号,您使用 cfn-signal 帮助程序脚本或 SignalResource API。CloudFormation 向堆栈事件发送有效的信号,以便您跟踪发送的信号数。

仅在 CloudFormation 创建相关联资源时调用创建策略。目前,支持创建策略的 CloudFormation 资源仅有:

当您希望在堆栈创建继续之前等待资源配置操作时,使用 CreationPolicy 属性。例如,如果在 EC2 实例上安装和配置软件应用程序,则您可能希望这些应用程序在继续操作之前正常运行。在这种情况下,您可将 CreationPolicy 属性添加到该实例,然后在安装和配置这些应用程序后向该实例发送成功信号。有关详细示例,请参阅 使用 Amazon CloudFormation 在 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 取整到最接近的十分位值。例如,如果您创建五个实例,最小成功百分比为 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 分钟后超时。

要让实例在发送成功信号之前,等待 Elastic Load Balancing 运行状况检查,请使用 cfn-init 帮助程序脚本添加运行状况检查验证。有关示例,请参阅 Amazon EC2 Auto Scaling 滚动更新示例模板中的 verify_instance_health 命令。

JSON
"AutoScalingGroup": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Properties": { "AvailabilityZones": { "Fn::GetAZs": "" }, "LaunchConfigurationName": { "Ref": "LaunchConfig" }, "DesiredCapacity": "3", "MinSize": "1", "MaxSize": "4" }, "CreationPolicy": { "ResourceSignal": { "Count": "3", "Timeout": "PT15M" } }, "UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : "true" }, "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "2", "PauseTime" : "PT1M", "WaitOnResourceSignals" : "true" } } }, "LaunchConfig": { "Type": "AWS::AutoScaling::LaunchConfiguration", "Properties": { "ImageId": "ami-16d18a7e", "InstanceType": "t2.micro", "UserData": { "Fn::Base64": { "Fn::Join" : [ "", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" }, " --resource AutoScalingGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ] ] } } } }
YAML
AutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: '' LaunchConfigurationName: Ref: LaunchConfig DesiredCapacity: '3' MinSize: '1' MaxSize: '4' CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' PauseTime: PT1M WaitOnResourceSignals: 'true' LaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-16d18a7e InstanceType: t2.micro UserData: "Fn::Base64": !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource AutoScalingGroup --region ${AWS::Region}

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