用途
用於需要定時的營運情境。啟動執行後,OOS即將執行置於等待狀態,直到指定的時刻才開始後續的任務。任務完成以後重新進入到等待狀態。
限制
觸發器有如下限制:
一個模版只允許有一個觸發器動作。
觸發器動作的任務必須定義在模版Tasks中的第一個任務。
被嵌套的模版(子模版)中不允許有觸發器動作。
文法
YAML格式
Tasks:
- Name: timerTask # 任務名稱
Action: ACS::TimerTrigger
Properties:
Type: cron # 必填,時間類型,可選cron、at或rate。
Expression: '0 * * ? * *' # 必填,cron運算式(cron預設是按UTC時間計算)、日期時間運算式或rate。
TimeZone: 'Asia/Shanghai' # 選填,所選時間對應的時區,預設為UTC。
EndDate: '2020-12-29T09:19:30Z' # 必填,終止時間(UTC時間,格式為YYYY-MM-DD或YYYY-MM-DDThh:mm:ssZ)。
JSON格式(請參考YAML注釋說明)
{
"Tasks": [
{
"Name": "timerTask",
"Action": "ACS::TimerTrigger",
"Properties": {
"Type": "cron",
"Expression": "0 * * ? * *",
"EndDate": "2020-12-29T09:19:30Z",
"TimeZone": "Asia/Shanghai"
}
}
]
}
流程圖
流程圖說明如下:
使用者建立執行後,父執行即進入等待(Waiting)狀態。
到達指定時間後,父執行即進入執行中(Running)狀態。同時,父執行自動建立一個子執行,使用同樣的模板,同樣的參數,但是跳過觸發器任務(Trigger Task)直接執行後續任務。
等到子執行完成後,如圖中的成功(Success)狀態,也可以是失敗(Failed)或取消狀態(Cancelled),父執行重新進入等待(Waiting)狀態,等待到達下次指定時間,然後重複上述步驟。
到達指定的終止時間後,父執行停止等待,完成執行並標記為成功(Success)。
使用者可以像取消普通執行一樣取消父執行或子執行,被取消的執行狀態為取消(Cancelled)。
樣本
cron類型
YAML格式:
FormatVersion: OOS-2019-06-01
Description: Schedule to reboot ECS instances.
Tasks:
- Name: timer
Action: ACS::TimerTrigger
Properties:
Type: cron
Expression: 5 minute
EndDate: 2020-12-20T00:00:00Z
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Properties:
InstanceId: "i-xxxxx"
JSON格式:
{
"FormatVersion": "OOS-2019-06-01",
"Description": "Schedule to reboot ECS instances.",
"Tasks": [
{
"Name": "timer",
"Action": "ACS::TimerTrigger",
"Properties": {
"Type": "cron",
"Expression": "5 minute",
"EndDate": "2020-12-20 00:00:00 UTC"
}
},
{
"Name": "rebootInstance",
"Action": "ACS::ECS::RebootInstance",
"Properties": {
"InstanceId": "i-xxxxx"
}
}
]
}
at類型
YAML格式:
FormatVersion: OOS-2019-06-01
Description: Schedule to reboot ECS instances.
Tasks:
- Name: timer
Action: ACS::TimerTrigger
Properties:
Type: at
Expression: '2020-02-29T09:17:35Z'
EndDate: 2020-12-20T00:00:00Z
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Properties:
InstanceId: "i-xxxxx"
JSON格式:
{
"FormatVersion": "OOS-2019-06-01",
"Description": "Schedule to reboot ECS instances.",
"Tasks": [
{
"Name": "timer",
"Action": "ACS::TimerTrigger",
"Properties": {
"Type": "at",
"Expression": "2020-02-29T09:17:35Z",
"EndDate": "2020-12-20T00:00:00.000Z"
}
},
{
"Name": "rebootInstance",
"Action": "ACS::ECS::RebootInstance",
"Properties": {
"InstanceId": "i-xxxxx"
}
}
]
}