

这是新的《CloudFormation 模板参考指南》**。请更新您的书签和链接。有关开始使用 CloudFormation 的帮助，请参阅《AWS CloudFormation 用户指南》[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)。

# `CreationPolicy` 属性
<a name="aws-attribute-creationpolicy"></a>

将 `CreationPolicy` 属性与资源相关联，以防止在 CloudFormation 收到指定数量的成功信号或超出超时期限之前进入“创建完成”状态。要向资源发出信号，您可以使用 [cfn-signal](cfn-signal.md) 帮助程序脚本或 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SignalResource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SignalResource.html) API。CloudFormation 向堆栈事件发送有效的信号，以便您跟踪发送的信号数。

仅在 CloudFormation 创建相关联资源时调用创建策略。目前，支持创建策略的 CloudFormation 资源仅有：
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-appstream-fleet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-appstream-fleet.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-waitcondition.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-waitcondition.html)

当您希望在堆栈创建继续之前等待资源配置操作时，使用 `CreationPolicy` 属性。例如，如果在 EC2 实例上安装和配置软件应用程序，则您可能希望这些应用程序在继续操作之前正常运行。在这种情况下，您可将 `CreationPolicy` 属性添加到该实例，然后在安装和配置这些应用程序后向该实例发送成功信号。有关详细示例，请参阅《AWS CloudFormation 用户指南》**中的[使用 CloudFormation 在 Amazon EC2 上部署应用程序](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html)。

## WorkSpaces 应用程序创建策略
<a name="aws-attribute-creation-policy-app-stream-fleet"></a>

Amazon AppStream 策略创建配置。

### 语法
<a name="aws-attribute-creation-policy-app-stream-fleet-syntax"></a>

#### JSON
<a name="aws-attribute-creation-policy-app-stream-fleet-syntax-json"></a>

```
{
    "CreationPolicy": {
        "StartFleet": "Boolean"
    }
}
```

#### YAML
<a name="aws-attribute-creation-policy-app-stream-fleet-syntax-yaml"></a>

```
CreationPolicy:
  StartFleet: Boolean
```

`StartFleet`  <a name="cfn-attributes-updatepolicy-replacingupdate-StartFleet"></a>
启动指定的实例集。  
*必需*：否

## Amazon EC2 Auto Scaling 创建属性
<a name="w2aac19b7c13"></a>

Amazon EC2 Auto Scaling 策略创建配置。

### 语法
<a name="aws-attribute-creation-policy-app-auto-scaling-syntax"></a>

#### JSON
<a name="aws-attribute-creation-policy-app-auto-scaling-syntax.json"></a>

```
"CreationPolicy" : {
  "AutoScalingCreationPolicy" : {
    "MinSuccessfulInstancesPercent" : Integer
  },
  "ResourceSignal" : {    
    "Count" : Integer,
    "Timeout" : String
  }
}
```

#### YAML
<a name="aws-attribute-creation-policy-app-auto-scaling-syntax.yaml"></a>

```
CreationPolicy:
  AutoScalingCreationPolicy:
    MinSuccessfulInstancesPercent: Integer
  ResourceSignal:    
    Count: Integer
    Timeout: String
```

### Amazon EC2 Auto Scaling 创建属性
<a name="cfn-attributes-creationpolicy-properties"></a>

Amazon EC2 Auto Scaling 策略创建配置。

`AutoScalingCreationPolicy`  <a name="cfn-attributes-creationpolicy-autoscalingcreationpolicy"></a>
对于新 Amazon EC2 Auto Scaling 组，指定在将组的状态设置为 `CREATE_COMPLETE` 之前必须发出成功信号的实例数。    
`MinSuccessfulInstancesPercent`  <a name="cfn-attributes-creationpolicy-autoscalingcreationpolicy-minsuccessfulinstancespercent"></a>
指定在将组的状态设置为 `CREATE_COMPLETE` 之前必须发出成功信号的 Amazon EC2 Auto Scaling 中的实例百分比。可以指定从 `0` 到 `100` 的值。CloudFormation 取整到最接近的十分位值。例如，如果您创建五个实例，最小成功百分比为 `50`，则必须有三个实例发送成功信号才行。如果某个实例在 `Timeout` 属性指定的时间里未发送信号，CloudFormation 假定该实例未创建。  
*默认值*：`100`  
*类型*：整数  
*必需*：否

`ResourceSignal`  <a name="cfn-attributes-creationpolicy-resourcesignal"></a>
CloudFormation 创建关联的资源时，配置所需的成功信号数以及 CloudFormation 等待这些信号的时间长度。    
`Count`  <a name="cfn-attributes-creationpolicy-resourcesignal-count"></a>
CloudFormation 在将资源状态设置为 `CREATE_COMPLETE` 之前必须收到的成功信号的数目。如果资源在超时期限过期之前收到失败信号或未收到指定数目的信号，则资源创建将失败并且 CloudFormation 将回滚堆栈。  
*默认值*：`1`  
*类型*：整数  
*必需*：否  
`Timeout`  <a name="cfn-attributes-creationpolicy-resourcesignal-timeout"></a>
CloudFormation 等待 `Count` 属性中指定数目的信号的时长。超时期限自 CloudFormation 稳定资源后开始，并且超时期限过期时间不会早于您指定的时间，但会在您指定时间后的很短时间内发生。您可指定的最长时间为 12 小时。  
该值必须采用以下形式的 [ISO8601 持续时间格式](https://en.wikipedia.org/wiki/ISO_8601#Durations)：`PT#H#M#S`，其中各个 *\$1* 分别表示小时数、分钟数和秒数。为获得最佳结果，请指定足够长的时间段，以便实例可以正常启动和运行。更短的超时可导致回滚。  
*默认值*：`PT5M`（5 分钟）  
*类型*：字符串  
*必需*：否

## 示例
<a name="aws-attribute-creation-policy-examples"></a>

### 自动扩缩组
<a name="aws-attribute-creation-policy-as-group"></a>

以下示例介绍如何将创建策略添加到 Amazon EC2 Auto Scaling 组。创建策略需要 3 个成功信号且在 15 分钟后超时。当实例创建过程成功完成后，使用 [cfn-signal](cfn-signal.md) 帮助程序脚本发送信号。

要让实例在发送成功信号之前，等待弹性负载均衡运行状况检查，请使用 [cfn-init](cfn-init.md) 帮助程序脚本添加运行状况检查验证。有关示例，请参阅 [GitHub 存储库](https://github.com/aws-cloudformation/aws-cloudformation-templates/tree/main/AutoScaling)中 Amazon EC2 Auto Scaling 滚动更新示例模板中的 `verify_instance_health` 命令。

#### JSON
<a name="aws-attribute-creationpolicy-example-1.json"></a>

```
"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
<a name="aws-attribute-creationpolicy-example-1.yaml"></a>

```
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
<a name="w2aac19b7c15b5"></a>

以下示例介绍了如何向 Amazon EC2 之外的 CloudFormation 资源的等待条件添加创建策略。

要向 `WaitCondition` 资源发送信号，需使用 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SignalResource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SignalResource.html) API。此 API 旨在处理您使用 `CreationPolicy` 配置的 `WaitCondition` 资源。

#### JSON
<a name="aws-attribute-creationpolicy-example-2.json"></a>

```
"WaitCondition" : {
    "Type" : "AWS::CloudFormation::WaitCondition",
    "CreationPolicy" : {
        "ResourceSignal" : {
            "Timeout" : "PT15M",
            "Count" : "5"
        }
    }
}
```

#### YAML
<a name="aws-attribute-creationpolicy-example-2.yaml"></a>

```
WaitCondition:
  Type: AWS::CloudFormation::WaitCondition
  CreationPolicy:
    ResourceSignal:
      Timeout: PT15M
      Count: 5
```