ALIYUN::ROS::WaitCondition类型用于等待信号,与ALIYUN::ROS::WaitConditionHandle配合使用以控制资源栈的执行流程。创建ECS实例时,在自定义数据执行过程中发送信号。
语法
{
"Type": "ALIYUN::ROS::WaitCondition",
"Properties": {
"Count": Number,
"Handle": String,
"Timeout": Number,
"ShowProgressEvent": String
}
}
属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Handle | String | 是 | 否 | 引用ALIYUN::ROS::WaitConditionHandle创建的实例。 | 无 |
Timeout | Number | 是 | 否 | 接收UserData消息的超时时间。 | 取值范围:1~43,200。 单位:秒。 |
Count | Number | 否 | 是 | 接收UserData消息的总数。 | 无 |
ShowProgressEvent | String | 否 | 否 | 是否显示接收UserData消息的进度事件。 | 取值: |
返回值
Fn::GetAtt
Data:JSON格式字符串,最近一次创建或更新后的信号数据。
JoinedErrorData:字符串,ErrorData信号内容的拼接。
ErrorData:JSON格式字符串,最近一次创建或更新后的错误信号数据。
示例
YAML
格式
ROSTemplateFormatVersion: '2015-09-01'
Description: ''
Parameters: {}
Outputs: {}
Resources:
InstallNginx:
Type: 'ALIYUN::ECS::RunCommand'
Properties:
Type: RunShellScript
CommandContent:
'Fn::Replace':
- ros-notify:
'Fn::GetAtt':
- InstallNginxWaitConditionHandle
- CurlCli
- |
#!/bin/sh
yum install -y nginx
systemctl restart nginx
if [[ $? -eq 0 ]];
then
ros-notify -d "{\"status\" : \"SUCCESS\"}"
else
ros-notify -d "{\"status\" : \"FAILURE\"}"
fi
Name: InstallNginxScript
InstanceIds:
- i-wz995r4yn8njthoq****
Timeout: 60
InstallNginxWaitConditionHandle:
Type: 'ALIYUN::ROS::WaitConditionHandle'
InstallNginxWaitCondition:
Type: 'ALIYUN::ROS::WaitCondition'
Properties:
Handle:
Ref: InstallNginxWaitConditionHandle
Timeout: 60
Metadata: {}
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "",
"Parameters": {},
"Outputs": {},
"Resources": {
"InstallNginx": {
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"Type": "RunShellScript",
"CommandContent": {
"Fn::Replace": [
{
"ros-notify": {
"Fn::GetAtt": [
"InstallNginxWaitConditionHandle",
"CurlCli"
]
}
},
"#!/bin/sh\nyum install -y nginx\nsystemctl restart nginx\nif [[ $? -eq 0 ]];\nthen \nros-notify -d \"{\\\"status\\\" : \\\"SUCCESS\\\"}\" \nelse \nros-notify -d \"{\\\"status\\\" : \\\"FAILURE\\\"}\" \nfi \n"
]
},
"Name": "InstallNginxScript",
"InstanceIds": [
"i-wz995r4yn8njthoq****"
],
"Timeout": 60
}
},
"InstallNginxWaitConditionHandle": {
"Type": "ALIYUN::ROS::WaitConditionHandle"
},
"InstallNginxWaitCondition": {
"Type": "ALIYUN::ROS::WaitCondition",
"Properties": {
"Handle": {
"Ref": "InstallNginxWaitConditionHandle"
},
"Timeout": 60
}
}
},
"Metadata": {}
}