定时任务是一种预设任务,可以在指定时间执行指定伸缩规则,实现计算资源的自动扩张或者自动收缩,满足业务需求的同时又能控制成本。

支持的主要配置项

定时任务支持的主要配置项如下所示:

配置项 说明
执行时间 表示定时任务的触发时间。
  • 如果未设置重复周期,则按指定的日期和时间执行一次。
  • 如果设置了重复周期,则该属性指定的时间点默认为周期性任务的执行时间点。
注意 请勿填写自创建或修改当天起90日后的时间,否则定时任务无法生效。
伸缩组 表示设置定时任务功能的目标伸缩组(已创建的伸缩组)。更多信息,请参见伸缩组概述
伸缩方式
  • 选择已有伸缩规则:您可以选择已有的伸缩规则,定时任务仅支持简单规则。更多信息,请参见伸缩规则概述
  • 伸缩组内实例数量设置:您可以直接指定伸缩组的最大实例数、最小实例数或期望实例数,新指定的数值会覆盖伸缩组原来的设置,并在指定时间立即生效。
    说明 如果创建伸缩组时没有开启期望实例数功能,则只能设置伸缩组的最大实例数和最小实例数。
伸缩规则(简单规则) 如果伸缩方式为选择已有伸缩规则时,才会出现该配置项,请您选择已创建的伸缩规则(简单规则)。更多信息,请参见配置伸缩规则CreateScalingRule
重试过期时间 表示在时间间隔内重新执行定时任务,避免因为单次执行伸缩规则失败影响定时任务的结果。如果同一分钟内存在多个待执行的定时任务,弹性伸缩会执行最新创建的定时任务。
重复周期 表示定时任务重复执行的规则。您可以选择不设置、按天、按星期、按月的方式重复执行定时任务,如果要求多样,也可以使用Cron表达式。Cron表达式的详细介绍,请参见Cron表达式
说明 修改定时任务的重复周期方式时,不支持选择不设置选项。

Cron表达式

在弹性伸缩控制台配置定时任务的重复周期参数时,您可以选择Cron表达式来进行设置。

Cron表达式是一个具有时间含义的字符串,每个具有时间含义的字符叫做域,域之间用空格隔开。弹性伸缩定时任务支持5个域的Cron表达式,格式为X X X X XX是一个域的占位符。Cron表达式中的每个域依次表示分钟、小时、天、月和星期,每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。

定时任务配置Cron表达式时,需要注意以下内容:

  • Cron表达式采用UTC+0时区,在配置Cron表达式时,您需要把本地时间换算成在UTC+0时区的时间。例如,中国的时区是UTC+8,如果您计划在中国时区(例如每天20:00)执行任务,需要将计划执行时间减去8小时,设置的Cron表达式应为0 12 * * ?
  • 单个Cron定时任务五分钟限制执行一次。
  • 确保Cron表达式第一次执行的时间小于定时任务的重复结束时间,否则会提示参数错误。
表 1. 域取值
是否必需 取值范围 特殊字符
分钟 0~59 , - / *
小时 0~23 , - / *
1~31 , - / * ? L W
1~12 , - / *
星期 1~7,星期日取值为7 , - * ? / L #
表 2. 特殊字符
特殊字符 含义 示例
* 域内的所有可能值。 在月域中,*表示每个月;在星期域中,*表示星期的每一天。
, 列出枚举值。 在分钟域中,5,20表示第5分钟和第20分钟。
- 表示范围值。 在分钟域中,5-20表示从第5分钟到第20分钟之间的每一分钟。
/ 指定数值的增量。 在分钟域中,0/15表示从第0分钟开始的每15分钟,3/20表示从第3分钟开始的每20分钟。
? 不指定值,仅日期域和星期域支持该字符。
说明 当日期或星期域其中之一被指定了值以后,为了避免计算冲突,需要将另一个域的值设为?
在日期域中,?表示不指定具体某日期。在星期域中,?表示不指定具体某星期几。例如,以UTC+0时区为例,15 10 15 * ?表示每月15日上午10:15执行任务,无论第15日是星期几。
L 单词Last的首字母,表示最后一天,仅日期域和星期域支持该字符。
说明 指定L字符时,避免指定列表或者范围,否则,会导致逻辑问题。
  • 在日期域中,L表示某个月的最后一天。在星期域中,L表示一个星期的最后一天。
  • 如果在L前有具体的内容,例如,在星期域中的6L表示这个月的最后一个星期六。
W 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。 在日期域中5W,如果5日是星期六,则将在最近的工作日星期五,即4日触发。如果5日是星期天,则将在最近的工作日星期一,即6日触发;如果5日在星期一到星期五中的一天,则就在5日触发。
# 指定每个月第几个星期几,仅星期域支持该字符。取值范围:1~5。 在星期域中,4#2表示某月的第二个星期四。
表 3. 取值示例

下表以中国时区UTC+8为例,说明不同的Cron表达式示例代表的含义。在设置Cron表达式时,请注意将本地时间换算成在UTC+0时区的时间。

示例 说明
15 10 ? * * 每天18:15执行任务
15 9 * * * 每天17:15执行任务
0 12 * * ? 每天20:00执行任务
0 10,14,16 * * ? 每天18:00、22:00以及00:00执行任务
15 10 15 * ? 每月15日18:15执行任务
15 10 L * ? 每月最后一日18:15执行任务
15 10 ? * 6L 每月最后一个星期六18:15执行任务
15 10 ? * 6#3 每月第三个星期六18:15执行任务

如何配置定时任务

配置定时任务的相关文档如下所示:

控制台文档 操作项 API文档
配置定时任务 创建定时任务 CreateScheduledTask
修改定时任务 ModifyScheduledTask
启用定时任务
停用定时任务
删除定时任务 DeleteScheduledTask
说明 创建定时任务完成后,您也可以调用DescribeScheduledTasks接口查看定时任务的详细信息。