ALIYUN::ROS::WaitCondition は、シグナルを待機するために使用されます。ALIYUN::ROS::WaitCondition を ALIYUN::ROS::WaitConditionHandle と共に使用して、スタックの実行プロセスを管理できます。Elastic Compute Service (ECS) インスタンスを作成すると、ユーザーデータの実行中にシグナルが送信されます。
構文
{
"Type": "ALIYUN::ROS::WaitCondition",
"Properties": {
"Count": Number,
"Handle": String,
"Timeout": Number,
"ShowProgressEvent": String
}
}
プロパティ
プロパティ | タイプ | 必須 | 編集可能 | 説明 | 制約 |
Handle | String | はい | いいえ | ALIYUN::ROS::WaitConditionHandle を使用して作成されたインスタンスへの参照。 | なし。 |
Timeout | Number | はい | いいえ | UserData メッセージの受信が許可されるタイムアウト期間。 | 有効な値: 1 ~ 43200。 単位: 秒。 |
Count | Number | いいえ | はい | Resource Orchestration Service (ROS) が受信する 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: # ros-notify を置き換えます
'Fn::GetAtt':
- InstallNginxWaitConditionHandle
- CurlCli
- |
#!/bin/sh
yum install -y nginx
systemctl restart nginx
if [[ $? -eq 0 ]]; # 終了コードが 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": { // 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": {}
}