AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::CloudFormation::WaitCondition

重要

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

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

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

  • 跟踪配置过程的状态

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

注意

如果使用 VPC 终端节点功能,则 VPC 中响应等待条件的资源必须能够访问 AWS CloudFormation 特定 Amazon Simple Storage Service (Amazon S3) 存储桶。资源必须将等待条件响应发送到预签名 Amazon S3 URL。如果不能向 Amazon S3 发送响应,AWS 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

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

Required: No

Type: Integer

更新要求:不支持更新。

Handle

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

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

Required: Yes

Type: String

更新要求:不支持更新。

Timeout

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

Required: Yes

Type: String

更新要求:不支持更新。

返回值

Ref

当该资源的逻辑 ID 提供给 Ref内部函数时,Ref 将返回资源名称。

有关使用 Ref 功能的更多信息,请参阅参考

Fn::GetAtt

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

Data

返回:JSON 数据元,其中包含针对指定等待条件的等待条件信号 UniqueIdData 值。有关等待条件信号的更多信息,请参阅 等待条件发送 JSON 格式

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

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

有关使用 Fn::GetAtt 的更多信息,请参见 Fn::GetAtt

示例

等待 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"

另请参阅