ALIYUN::ROS::WaitConditionHandle用于接收信号,与ALIYUN::ROS::WaitCondition配合使用以控制资源栈的执行流程。创建ECS实例时,在自定义数据执行过程中发送信号。
语法
{
"Type": "ALIYUN::ROS::WaitConditionHandle",
"Properties": {
"Mode": String,
"Count": Integer
}
}
属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Mode | String | 否 | 是 | 控制旧信号在资源更新前如何删除。 | 取值:
|
Count | Integer | 否 | 是 | Mode取值为Full时,ID为整数且大于Count的旧信号在资源更新前会被删除。 | 默认值为-1。 当满足以下2个条件时,该属性生效:
如果该属性生效,则ID>Count的旧信号将在更新前删除。如果存在非整数ID的旧信号,则资源更新失败。 在需要通过更新资源栈进行弹性扩容或缩容的场景下,推荐设置该值,并与ALIYUN::ROS::WaitCondition的Count属性取值相同。 |
返回值
Fn::GetAtt
CurlCli:该资源产生的curl命令。通过该命令发送自定义数据执行的结果或者状态到资源编排服务。
WindowsCurlCli:为Windows提供curl CLI命令前缀,可用于发送处理完成或失败的信号。由于Windows不支持curl命令,您需要先安装curl.exe并将其添加到PATH中。您可以通过添加
-d "{\"status\": \" SUCCESS \"}
表示成功、添加-d "{\"status\": \" FAILURE \"}
表示失败。PowerShellCurlCli:为PowerShell提供curl CLI命令前缀,可用于发送处理完成或失败的信号。由于此cmdlet是在PowerShell 3.0中引入的,所以要确保PowerShell的版本满足此约束,PowerShell的版本可以通过
$PSVersionTable.PSVersion
显示。您可以通过添加-Body '{"status": " SUCCESS "}
表示成功、添加-Body '{"status": " FAILURE "}
表示失败。Headers:HTTP POST请求头,可用于在程序中发送处理完成或失败的信号。
URL:HTTP POST请求地址,可用于在程序中发送处理完成或失败的信号。
CurlCli、WindowsCurlCli、PowerShellCurlCli的请求体中均可通过设置ID字段(字符串)明确指定信号ID。
例如:
-d "{\"status\": \" SUCCESS \", \"id\": \"test\"}
。相同ID的信号会被当作同一信号,后面收到的信号会覆盖前面收到的。
如果没有指定ID,ROS会使用整数作为信号ID,这个整数=已有信号的数量+1。
CurlCli、WindowsCurlCli、PowerShellCurlCli的请求体中均可通过设置
reason字段(字符串)
设置信号成功或失败原因,这个原因会出现在ROS资源栈事件(信号通知类型)当中。例如:
-d "{\"status\": \" SUCCESS \", \"reason\": \"nginx is installed successfully.\"}"
。指定了
reason字段
之后,这个请求的内容就会出现在资源栈事件(信号通知类型)当中。CurlCli、WindowsCurlCli、PowerShellCurlCli的请求体中均可通过设置了
data字段(字符串)
设置信号关联的数据,这个数据可以通过ALIYUN::ROS::WaitCondition的输出属性Data、ErrorData、JoinedErrorData获取。例如:
-d "{\"id\" : \"ssh_pub_key\", \"data\" : \"$pub_key\"}"
。通过
status
字段可以指定信号类型,包括SUCCESS
、FAILURE
、WARNING
。信号类型与资源操作结果的关系如下:(优先级从高到低)如果收到
FAILURE
信号,则资源操作失败。如果在设定时间内,收到的信号数量未满足要求,则资源操作超时失败。
如果收到的信号数量满足了要求,且所有信号均为
WARNING
,则资源操作失败。其他情况下,资源操作成功。
示例
- 本页导读 (1)
- 语法
- 属性
- 返回值
- 示例