Serverless工作流支持通过配置Cron表达式来定时调度工作流的执行。本文介绍如何为Serverless工作流创建定时调度。
前提条件
使用控制台创建定时调度
使用命令行工具创建定时调度
在使用前您需要安装和配置阿里云命令行工具CLI,更多信息,请参见安装指南和配置指南。
调度时间参数说明
定时调度的参数格式如下:
{
payload: "payload"
cronExpression: "cronExpression"
enable: true|false
}
- payload:您可以自定义执行定时调度的输入,必须为JSON格式。
- cronExpression:工作流被调度的时间,支持以下两种表达式。
说明 定时调度允许的最小调度时间间隔为1分钟。如果配置的时间间隔小于1分钟会被认为是非法输入。
- @every Value Unit
表示每隔Value Unit时间调度一次工作流执行。其中Value为一个正整数,Unit为单位“m”。
场景示例 表达 每隔5分钟调度一次 @every 5m 每隔1.5小时调度一次 @every 90m - 标准的Cron表达式
标准的Cron表达式为:Seconds Minutes Hours Day-of-month Month Day-of-week。
说明 Cron以UTC时间运行,即北京时间减去8个小时。- 字段说明
字段名 取值范围 允许的特殊字符 Seconds 0~59 无 Minutes 0~59 , - * / Hours 0~23 , - * / Day-of-month 1~31 , - * ?/ Month 1~12或JAN~DEC , - * / Day-of-week 1~7或MON~SUN , - * ? - 特殊字符说明
字符名 定义 示例 * 表示任一,每一。 在Minutes字段中:0表示每分钟的0秒都执行。 , 表示列表值 在Day-of-week字段中:MON,WED,FRI表示星期一,星期三和星期五。 - 表示一个范围 在Hours字段中:10-12表示UTC时间从10点到12点。 ? 表示不确定的值 与其他指定值一起使用。例如指定了一个特定的日期,但您不在乎他是星期几,那么在Day-of-week字段中就可以使用。 / 表示一个值的增加幅度,n/m表示从n开始,每次增加m。 在minute字段中:3/5表示从3分开始,每隔5分钟执行。 - 常用示例
下表的第一列为北京时间,第二列为北京时间对应的UTC时间(即北京时间减去8小时)。例如您希望工作流在北京时间12:00被调度,则需先将时间转换为UTC时间4:00,对应的Cron表达式为0 0 4 * * *。
示例(北京时间) 转换为UTC时间 表达式 每天12:00调度函数 每天4:00调度函数 0 0 4 * * * 每天12:30调度函数 每天4:30调度函数 0 30 4 * * * 每小时的26分,29分,33分调度函数 每小时的26分,29分,33分调度函数 0 26,29,33 * * * * 周一到周五的每天12:30调度函数 周一到周五的每天4:30调度函数 0 30 4 ? * MON-FRI 周一到周五的每天12:00~14:00每5分钟调度函数 周一到周五的每天4:00~6:00每5分钟调度函数 0 0/5 4-6 ? * MON-FRI 一月到四月每天12:00调度函数 一月到四月每天4:00调度函数 0 0 4 ? JAN,FEB,MAR,APR *
- 字段说明
- @every Value Unit
Input格式
定时调度会按照以下Input格式来调度您的工作流执行。
{
"triggerTime": "2020-01-01T00:00:00Z",
"triggerName": "time-trigger",
"payload": {
"key": "value",
"key_int": 1
}
}
- triggerTime:工作流被调度的时间,一个工作流在指定的时间点可能会被调度多次,您可以根据时间值做去重处理。
- triggerName:定时调度名称。
- payload:您在调度配置里自定义的输入,工作流会将输入的JSON字符串展开为JSON dict格式,在流程定义中可以直接通过
$.payload.key
来读取。更多信息,请参见输入和输出。
在文档使用中是否遇到以下问题
更多建议
匿名提交