
# 使用定时触发器（TIMER）
本节介绍如何通过函数工作流控制台创建定时触发器（TIMER），实现按照设置的频率定期触发函数运行。
常见应用场景示例：
- 备份重要数据，例如每7天执行备份数据的函数。
- 监控服务器状态和资源使用情况，例如每天上午10点执行函数并发送服务器使用报表。
#### 定时触发器触发事件说明
定时触发器使用TIMER的计划事件功能，能够根据设定的固定频率（分钟、小时、天数）或指定的[Cron表达式规则]，定期调用函数，适用于需要定期执行任务的场景。
"拉美-圣保罗一"区域支持为共享函数配置定时触发器。
定时触发器的示例事件
- 定时触发器会按照以下事件格式触发函数，具体参数解释请参考[表1]。
  ```
  {
      "version": "v2.0",
      "time": "2023-06-01T08:30:00+08:00",
      "trigger_type": "TIMER",
      "trigger_name": "Timer_001",
      "user_event": "User Event"
  }
  ```
   表1TIMER示例事件参数说明 
  | 参数           | 类型     | 描述              |
  |:---|:---|:---|
  | version      | String | 事件函数的版本。        |
  | time         | String | 事件发生时间。         |
  | trigger_type | String | 触发器类型，此处为定时触发器。 |
  | trigger_name | String | 触发器名称。          |
  | user_event   | String | 在创建触发器时配置的附加信息。 |
     
  
 
#### 操作视频
本视频介绍如何在函数中使用定时触发器，并查看函数能否按照设定的频率执行。
因产品功能演进，操作界面可能存在差异，相关视频仅供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object81995716444" class="idp-external-video" src="https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/support/functiongraph-video/1751267628608129184.jpg" title="使用定时触发器" poster="https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002349182612.jpg" style="width:100%;height:auto;max-width:600px"></video>
#### 约束与限制
HTTP函数不支持创建定时触发器。
#### 前提条件
已[创建函数](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0153.html)。
#### 创建定时触发器
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击函数名称进入函数详情页。 "拉美-圣保罗一"区域支持为共享函数配置定时触发器，单击"共享函数"页签下的函数名称进入函数详情页即可。共享函数相关说明请参考[基于RAM共享函数资源](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0383.html)。
   
3. 如[图1]所示，选择"设置 \> 触发器"，单击"创建触发器"，弹出"创建触发器"对话框。
   图1创建触发器   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082254022.png "点击放大") 
4. 配置以下参数。
   表2定时触发器参数说明 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 取值样例                                            |
   |:---|:---|:---|
   | 触发器类型 | 选择"定时触发器 (TIMER)"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 定时触发器 (TIMER)                                   |
   | 定时器名称 | 自定义的定时器名称。支持字母、数字、下划线和中划线，必须以字母开头，且长度不能超过64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Timer-fg                                        |
   | 触发规则  | 触发器的触发规则，可选择使用"固定频率"或"Cron表达式"。 - 固定频率：固定时间间隔触发函数，该类型下支持配置单位为分、时、天，每种类型仅支持整数配置，其中分钟支持范围(0，60\]，小时支持范围(0，24\]，天支持范围(0，30\]。  - Cron表达式：设置更为复杂的函数执行计划，例如：周一到周五上午08:30:00执行函数等，具体请参见[Cron表达式规则]。   | 固定频率 1分钟 |
   | 是否开启  | 选择是否开启定时触发器。不开启则不会按照设定频率触发函数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 开启                                              |
   | 附加信息  | 可选参数。 如果用户配置了触发事件，会将该事件填写到TIMER事件源的"user_event"字段，详情请参见[支持的事件源](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0102.html)。                                                                                                                                                                                                                                                                                                          | -                                               |
      
   
5. 单击"确定"，完成定时触发器的创建。
 
#### 查看函数运行结果
函数的定时触发器创建后，将按配置的触发规则定期执行函数，可以在函数详情页中查看函数运行日志。
1. 返回函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择"函数"，单击函数名称进入函数详情页。
3. 选择"监控 \> 日志"，查询[函数运行日志](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1834.html)。
 
 #### Cron表达式规则
函数Cron表达式下支持如下两种配置方式。
- **@every格式**
  @every NUnit，其中N表示一个正整数，Unit可以为ns, µs, ms, s, m, h，表示每隔N个Unit时间触发一次函数，如[表3]所示。
   表3表达式示例 
  | **表达式**      | **说明**           |
  |:---|:---|
  | @every 30m   | 每隔30分钟触发一次函数。    |
  | @every 1h    | 每隔1小时触发一次函数。     |
  | @every 2h30m | 每隔2小时30分钟触发一次函数。 |
     
  
- **标准Cron表达式**
  Cron表达式格式要求"秒 分 时 日 月 星期(可选)"，每个字段间以空格隔开，其中各字段说明如[表4]所示。其中特殊字符的含义说明请参考[表7]。
   表4Cron表达式字段说明 
  | 字段              | 说明                                                                                                                                                                                                                                                                                                       | 取值范围                                                                               | 允许的特殊字符    |
  |:---|:---|:---|:---|
  | CRON_TZ         | 可选。不设置则默认使用region所在时区。 如果您的任务需要按照特定时区运行，可以通过CRON_TZ指定，例如在北京时间每个月一号的04:00触发函数执行，则可以使用CRON_TZ=Asia/Shanghai 0 0 4 1 \* \*。 不同地域的时区表达式存在差异，请以实际情况自行查询所需地区的CRON_TZ表达方式，示例可参考[表8]。 | -                                                                                  | -          |
  | 秒               | 必选。                                                                                                                                                                                                                                                                                                      | 0-59                                                                               | , - \* /   |
  | 分               | 必选。                                                                                                                                                                                                                                                                                                      | 0-59                                                                               | , - \* /   |
  | 时               | 必选。                                                                                                                                                                                                                                                                                                      | 0-23                                                                               | , - \* /   |
  | 日(Day of month) | 必选。                                                                                                                                                                                                                                                                                                      | 1-31                                                                               | , - \* ? / |
  | 月               | 必选。                                                                                                                                                                                                                                                                                                      | 1-12或者Jan-Dec（英文不区分大小写）如[表5]所示。       | , - \* /   |
  | 星期(Day of week) | 可选。                                                                                                                                                                                                                                                                                                      | 0-6或者Sun-Sat（0表示星期天，英文不区分大小写），如[表6]所示。 | , - \* ? / |
     
   表5月份字段取值说明 
  | 月份  | 数字 | 英文简写 |
  |:---|:---|:---|
  | 1月  | 1  | Jan  |
  | 2月  | 2  | Feb  |
  | 3月  | 3  | Mar  |
  | 4月  | 4  | Apr  |
  | 5月  | 5  | May  |
  | 6月  | 6  | Jun  |
  | 7月  | 7  | Jul  |
  | 8月  | 8  | Aug  |
  | 9月  | 9  | Sep  |
  | 10月 | 10 | Oct  |
  | 11月 | 11 | Nov  |
  | 12月 | 12 | Dec  |
     
   表6星期字段取值说明 
  | 星期  | 数字 | 英文简写 |
  |:---|:---|:---|
  | 星期一 | 1  | Mon  |
  | 星期二 | 2  | Tue  |
  | 星期三 | 3  | Wed  |
  | 星期四 | 4  | Thu  |
  | 星期五 | 5  | Fri  |
  | 星期六 | 6  | Sat  |
  | 星期日 | 0  | Sun  |
     
  Cron表达式字段特殊字符说明如[表7]所示。
   表7特殊字符说明 
  | 特殊字符 | 含义                       | 说明                                                                                        |
  |:---|:---|:---|
  | \*   | 表示该字段中的所有值。              | 在"分钟"字段中表示每一分钟都执行。                                                                        |
  | ,    | 指定多个值（可以不连续）。            | 在"月"字段中指定"Jan,Apr,Jul,Oct"或者"1,4,7,10"，表示1月，4月，7月和10月，在"星期几"字段中指定"Sat,Sun"或者"6,0"表示周六，周日。 |
  | -    | 指定一个范围。                  | 在"分钟"字段中使用0-3，表示从0分到3分。                                                                   |
  | ?    | 指定一个或另一个。                | 仅"日"和"星期几"字段可以指定。例如，如果指定了一个特定的日期，但你不关心该日期对应星期几，那么"星期几"字段就可以使用该特殊字符。                       |
  | /    | 表示起步和步幅，n/m表示从n开始，每次增加m。 | 在"分钟"字段1/3表示在满足其它字段情况下，从时间1分（例如00:01:00）开始，每隔3分钟触发一次。                                     |
     
  Cron表达式配置示例如[表8]所示。
   表8Cron表达式配置示例 
  | 配置实例                        | Cron 表达式（以北京时区为例）                                 |
  |:---|:---|
  | 每天12点调度函数                   | CRON_TZ=Asia/Shanghai 0 0 12 \* \* \*             |
  | 每天12:30调度函数                 | CRON_TZ=Asia/Shanghai 0 30 12 \* \* \*            |
  | 每小时的26分，29分，33分调度函数         | CRON_TZ=Asia/Shanghai 0 26,29,33 \* \* \* \*      |
  | 周一到周五的每天12:30调度函数           | CRON_TZ=Asia/Shanghai 0 30 12 ? \* MON-FRI        |
  | 周一到周五的每天12:00～14:59每5分钟调度函数 | CRON_TZ=Asia/Shanghai 0 0/5 12-14 ? \* MON-FRI    |
  | 一月到四月每天12:00调度函数            | CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR \* |
     
  
 
#### 为共享函数创建定时触发器
"拉美-圣保罗一"区域支持为共享函数配置定时触发器，关于共享函数的相关介绍请参考[基于RAM共享函数资源](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0383.html)。
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择共享函数页签，单击函数名称进入函数详情页。
3. 后续创建步骤与普通函数相同，请参考[3]开始操作。
 
#### 相关文档
除使用控制台外，函数工作流支持通过API的方式管理函数触发器，详情请参见[函数触发器API](https://support.huaweicloud.com/api-functiongraph/FunctionTriggers.html)。
