AWS::CloudFormation::WaitCondition - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::CloudFormation::WaitCondition

重要

对于 Amazon EC2 和 Auto Scaling 资源,我们建议您使用 CreationPolicy 属性而非等待条件。当实例创建过程成功完成后,将“CreationPolicy”属性添加到这些资源,并使用 cfn-signal 帮助程序脚本发送信号。

您可以对与下类似的情况使用等待条件:

  • 将堆栈资源创建与堆栈创建外部的配置操作进行协调

  • 跟踪配置过程的状态

对于这些情况,我们建议您将 CreationPolicy 属性与等待条件关联,从而不必使用等待条件句柄。有关更多信息和示例,请参阅在模板中创建等待条件。如果使用了带等待条件的 CreationPolicy,则不要指定任何等待条件的属性。

注意

如果使用 VPC 终端节点功能,则响应等待条件的 VPC 中的资源必须能够访问 CloudFormation 特定的 Amazon Simple Storage Service (Amazon S3) 存储桶。资源必须将等待条件响应发送到预签名 Amazon S3 URL。如果这些资源不能向 Amazon S3 发送响应,则 CloudFormation 将不会收到响应,并且堆栈操作会失败。有关更多信息,请参阅为 AWS CloudFormation 设置 VPC 终端节点

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::CloudFormation::WaitCondition", "Properties" : { "Count" : Integer, "Handle" : String, "Timeout" : String } }

YAML

Type: AWS::CloudFormation::WaitCondition Properties: Count: Integer Handle: String Timeout: String

属性

Count

成功信号的数量,表示 CloudFormation 必须接收到该数量的成功信号,然后才能继续堆栈创建流程。当等待条件接收必要数量的成功信号时,CloudFormation 会继续创建堆栈。如果等待条件未能在超时之前接收到指定数量的成功信号,CloudFormation 会假定未满足等待条件并回滚堆栈。

不支持更新。

必需:否

类型:整数

Update requires: No interruption

Handle

对用于发送此等待条件信号的等待条件句柄的引用。使用 Ref 内部函数来指定 AWS::CloudFormation::WaitConditionHandle 资源。

只要您在堆栈更新过程中添加 WaitCondition 资源,就必须将等待条件与新的 WaitConditionHandle 资源进行关联。请勿重用已在模板中定义的旧等待条件句柄。如果您重用等待条件句柄,则该等待条件可能会计算来自上一个创建或更新堆栈命令的旧信号。

不支持更新。

必需:否

类型:字符串

Update requires: No interruption

Timeout

等待 Count 属性指定的信号数的时间长度(以秒为单位)。Timeout 是一种最低时限属性,表示超时的发生时间不会早于您指定的时间,但可能会在之后的很短时间内发生。为该属性指定的最长时间为 12 小时(43200 秒)。

不支持更新。

必需:否

类型:字符串

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 资源名称。

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Data

一个 JSON 对象,其中包含针对指定等待条件的等待条件信号中的 UniqueIdData 值。有关等待条件信号的更多信息,请参阅等待条件信号 JSON 格式

具有 2 个信号的等待条件的返回值示例:

{ "Signal1" : "Step 1 complete." , "Signal2" : "Step 2 complete." }

示例

等待 Web 服务器组中的实例达到所需数量的 WaitCondition

JSON

"WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "1", "MaxSize" : "5", "DesiredCapacity" : { "Ref" : "WebServerCapacity" }, "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ] } }, "WaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "WaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "WebServerGroup", "Properties" : { "Handle" : { "Ref" : "WaitHandle" }, "Timeout" : "300", "Count" : { "Ref" : "WebServerCapacity" } } }

YAML

WebServerGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: "" LaunchConfigurationName: Ref: "LaunchConfig" MinSize: "1" MaxSize: "5" DesiredCapacity: Ref: "WebServerCapacity" LoadBalancerNames: - Ref: "ElasticLoadBalancer" WaitHandle: Type: AWS::CloudFormation::WaitConditionHandle WaitCondition: Type: AWS::CloudFormation::WaitCondition DependsOn: "WebServerGroup" Properties: Handle: Ref: "WaitHandle" Timeout: "300" Count: Ref: "WebServerCapacity"

另请参阅