触发器
触发器是按照一定规则触发函数的模块的抽象,CloudBase 云函数目前仅支持定时触发器。
如果云函数需要定时/定期执行,即定时触发,您可以使用云函数定时触发器。已配置定时触发器的云函数,会在相应时间点被自动触发,函数的返回结果不会返回给调用方。
一个例子:
{
"version": "2.0",
"envId": "xxx",
"functions": [
{
// triggers 字段是触发器数组,目前仅支持一个触发器,即数组只能填写一个,不可添加多个
"triggers": [
{
// name: 触发器的名字,规则见下方说明
"name": "myTrigger",
// type: 触发器类型,目前仅支持 timer (即定时触发器)
"type": "timer",
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式,规则见下方说明
"config": "0 0 2 1 * * *"
}
]
}
]
}
创建函数触发器
您可以使用下面的命令创建一个触发器:
# 创建 app 函数配置的触发器
tcb fn trigger create app
Cloudbase CLI 会自动读取 cloudbaserc.json
文件中指定函数配置的定时触发器,并创建云函数触发器。如果配置文件中没有包含触发器配置,则会创建失败。
一个函数可以包含多个触发器,一个触发器包含了以下 3 个主要信息:name, type, config
{
// name: 触发器的名字,规则见下方说明
"name": "myTrigger",
// type: 触发器类型,目前仅支持 timer (即定时触发器)
"type": "timer",
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式
"config": "0 0 2 1 * * *"
}
当没有指定函数名时,Cloudbase CLI 会创建 cloudbaserc.json
文件包含的所有函数的所有触发器。
删除函数触发器
您可以使用下面的命令删除函数的触发器:
# 删除 app 函数的名为 trigger 的触发器
tcb fn trigger delete app trigger
同样,当没有指定函数名时,Cloudbase CLI 会删除 cloudbaserc.json
文件包含的所有函数的所有触发器。当只指定了函数名时,Cloudbase CLI 会删除指定函数的所有触发器,当同时指定了函数名称和触发器名称时,Cloudbase CLI 只会删除指定的触发器。
# 删除 cloudbaserc.json 文件中所有函数的所有触发器
tcb fn trigger delete
# 删除函数 app 的所有触发器
tcb fn trigger delete app
# 删除函数 app 的触发器 trigger
tcb fn trigger delete app trigger
触发器规则
- 定时触发器名称(name) :最大支持 60 个字符,支持
a-z
,A-Z
,0-9
,-
和_
。必须以字母开头,且一个函数下不支持同名的多个定时触发器。 - 定时触发器触发周期(config):指定的函数触发时间。填写自定义标准的 Cron 表达式来决定何时触发函数。有关 Cron 表达式的更多信息,请参考以下内容。
Cron 表达式有七个必需字段,按空格分隔。其中,每个字段都有相应的取值范围:
排序 | 字段 | 值 | 通配符 |
---|---|---|---|
第一位 | 秒 | 0 - 59 的整数 | , - * / |
第二位 | 分钟 | 0 - 59 的整数 | , - * / |
第三位 | 小时 | 0 - 23 的整数 | , - * / |
第四位 | 日 | 1 - 31 的整数(需要考虑月的天数) | , - * / |
第五位 | 月 | 1 - 12 的整数或 JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV 和 DEC | , - * / |
第六位 | 星期 | 0 - 6 的整数或 MON、TUE、WED、THU、FRI、SAT 和 SUN,其中 0 指周日,1 指星期一,以此类推 | , - * / |
第七位 | 年 | 1970 - 2099 的整数 | , - * / |
通配符
通配符 | 含义 |
---|---|
, (逗号) | 代表取用逗号隔开的字符的并集。例如:在“小时”字段中 1,2,3 表示 1 点、2 点和 3 点 |
- (短横线) | 包含指定范围的所有值。例如:在“日”字段中,1 - 15 包含指定月份的 1 号到 15 号 |
* (星号) | 表示所有值。在“小时”字段中,* 表示每个小时 |
/ (正斜杠) | 指定增量。在“分钟”字段中,输入 1/10 以指定从第一分钟开始的每隔十分钟重复。例如,第 11 分钟、第 21 分钟和第 31 分钟,以此类推 |
!在 Cron 表达式中的“日”和“星期”字段同时指定值时,两者为“或”关系,即两者的条件均生效。
示例
下面列举一些 Cron 表达式和相关含义:
*/5 * * * * * *
表示每 5 秒触发一次0 0 2 1 * * *
表示在每月的 1 日的凌晨 2 点触发0 15 10 * * MON-FRI *
表示在周一到周五每天上午 10:15 触发0 0 10,14,16 * * * *
表示在每天上午 10 点,下午 2 点,下午 4 点触发0 */30 9-17 * * * *
表示在每天上午 9 点到下午 5 点内每半小时触发0 0 12 * * WED *
表示在每个星期三中午 12 点触发