
# 函数触发器概述
#### 函数触发器介绍
触发器是FunctionGraph中用于启动函数执行的重要机制。当其他云服务作为事件源检测到特定事件时，触发器会根据预定义的规则自动调用关联的函数，从而实现事件的实时处理。FunctionGraph支持的触发事件请参见[FunctionGraph支持的触发事件]。
每个事件传递到函数时，仅包含与该触发器相关的事件数据，事件数据以结构化的JSON格式传递，FunctionGraph会将事件数据转换为函数处理程序可以使用的对象。根据具体业务需求，一个函数可以配置一个或多个触发器，每个触发器都可以独立地调用函数。
#### 函数触发器的调用方式
根据函数调用方式，函数的触发器可分为同步调用和异步调用。关于函数调用的更多说明请参见[调用函数](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0160.html)。
- 同步调用：客户端调用函数后，FunctionGraph会立即执行函数，等函数执行完成后再向客户端返回响应和执行结果。
- 异步调用：客户端调用函数后，FunctionGraph会将请求排队，不等待函数的执行结果，直接向客户端返回响应，FunctionGraph会在系统空闲的情况下逐个处理排队的请求。
表1函数触发器的调用机制 
| 触发器                            | 调用方式                                                                                                                                                                  |
|:---|:---|
| API网关服务（APIG专享版）触发器            | 默认为同步调用，但可以修改为异步调用，具体配置方式请参考[配置异步调用](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0160.html#functiongraph_01_0160__section624482414561)。 |
| API Connect（APIC）触发器           | 默认为同步调用，但可以修改为异步调用，具体配置方式请参考[配置异步调用](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0160.html#functiongraph_01_0160__section624482414561)。 |
| 定时触发器（TIMER）触发器                | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 云数据库 GeminiDB DynamoDB触发器      | 默认为同步调用，且不可修改。                                                                                                                                                        |
| 云审计服务（CTS）触发器                  | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 文档数据库服务（DDS）触发器                | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 数据接入服务（DIS）触发器                 | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 分布式消息服务 Kafka版（KAFKA）触发器       | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 开源Kafka（OPENSOURCEKAFKA）触发器    | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 分布式消息服务 RabbitMQ版（RABBITMQ）触发器 | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 云数据库 GeminiDB Mongo触发器         | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 设备接入（IoTDA）触发器                 | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 云日志服务（LTS）触发器                  | 默认为异步调用，且不可修改。                                                                                                                                                        |
| 消息通知服务（SMN）触发器                 | 默认为异步调用，且不可修改。                                                                                                                                                        |
| EventGrid触发器                   | 默认为异步调用，且不可修改。                                                                                                                                                        |
   
 #### FunctionGraph支持的触发事件
[表2]为支持触发FunctionGraph函数的云服务，这些云服务可配置为FunctionGraph函数的事件源，即配置函数的触发器。配置事件源触发器后，只要检测到相应事件，将自动调用FunctionGraph函数。
 表2FunctionGraph支持的云服务触发事件 
| 云服务/功能                 | 触发事件                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|
| 计划事件功能 TIMER           | 使用TIMER的计划事件功能定期调用函数代码，可以指定固定频率（分钟、小时、天数）或指定 Cron 表达式定期调用函数（[TIMER示例事件]）。 TIMER定时触发器的使用过程请参考[使用定时触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0207.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| API网关服务 APIG           | 通过HTTPS或者HTTP调用FunctionGraph函数，使用API Gateway自定义REST API和终端节点来实现。可以将各个API操作（如GET和PUT）映射到特定的FunctionGraph函数，当向该API终端节点发送HTTPS请求时（[APIG示例事件]），APIG会调用相应的FunctionGraph函数。 APIG的触发使用过程请参考：[使用APIG专享版触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0204.html)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| API Connect APIC       | 通过HTTPS或者HTTP调用FunctionGraph函数，将各个API操作（如GET和PUT）映射到特定的FunctionGraph函数，当向该API发送HTTPS或者HTTP请求时，APIC 会调用相应的FunctionGraph函数。 APIC的触发使用过程请参考[使用APIC触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1085.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 云审计服务 CTS              | 编写FunctionGraph函数，根据CTS云审计服务类型和操作订阅所需要的事件通知，当CTS云审计服务获取已订阅的操作记录后，通过CTS触发器将采集到的操作记录作为参数传递（[CTS示例事件]）来调用FunctionGraph函数。经由函数对日志中的关键信息进行分析和处理，对系统、网络等业务模块进行自动修复，或通过短信、邮件等形式产生告警，通知业务人员进行处理。 CTS的触发使用过程请参考[使用CTS触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0209.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 文档数据库服务 DDS            | 使用DDS触发器，每次更新数据库中的表时，都可以触发Functiongraph函数以执行额外的工作（[DDS示例事件]）。 DDS的触发使用过程请参考[使用DDS触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0210.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 数据接入服务 DIS             | 将FunctionGraph函数配置为自动轮询流并处理任何新记录，例如网站点击流、财务交易记录、社交媒体源、IT日志和数据位置跟踪事件等（[DIS示例事件]）。FunctionGraph会定期轮询DIS数据流中的新记录。 DIS的触发使用过程请参考[使用DIS触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0206.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 分布式消息服务 Kafka版         | 当向Kafka实例的Topic生产消息时，FunctionGraph会消费消息，触发函数以执行额外的工作（[Kafka示例事件]）。 分布式消息Kafka的触发使用过程请参见： - [使用Kafka触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0214.html)  - [使用开源Kafka触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1838.html)                                                                                                                                                                                                                                                                                                              |
| 分布式消息服务 RabbitMQ版      | FunctionGraph可以定期轮询RabbitMQ实例指定Exchange绑定的队列下的新消息，FunctionGraph将轮询得到的消息作为参数传递来调用函数（[分布式消息服务RabbitMQ示例事件]）。 分布式消息RabbitMQ的触发使用过程请参见[使用RabbitMQ触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1821.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 云数据库 GeminiDB MongoDB  | 使用GeminiDB MongoDB(MONGODB)触发器，每次更新数据库中的表时，都可以触发FunctionGraph函数以执行额外的工作（[GeminiDB MongoDB示例事件]）。 GeminiDB MongoDB触发器使用请参见[使用云数据库GeminiDB MongoDB触发器（即将下线不建议使用）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0210_00.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 云数据库 GeminiDB DynamoDB | 使用GeminiDB DynamoDB(DYNAMODB)触发器，实现定时拉取DynamoDB数据库流表中的信息，并触发函数执行（[云数据库GeminiDBDynamoDB示例]）。 GeminiDB DynamoDB触发器使用请参见[使用云数据库GeminiDB DynamoDB触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1822.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 设备接入服务 IoTDA           | 使用IoTDA触发器，对于设备上报到平台的数据，FunctionGraph可跟踪设备的设备属性、消息上报，状态变更，分析、整理和计量数据流（[IoTDA示例事件]）。 IoTDA触发器的使用请参见[使用IoTDA触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1843.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 云日志服务 LTS              | 编写FunctionGraph函数来处理云日志服务订阅的日志，当云日志服务采集到订阅的日志后，可以通过将采集到的日志作为参数传递（[LTS示例事件]）来调用FunctionGraph函数，FunctionGraph函数代码可以对其进行自定义处理、分析或将其加载到其他系统。 LTS的触发使用过程请参考[使用LTS触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0208.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 消息通知服务 SMN             | 编写FunctionGraph函数来处理SMN的通知，在将消息发布到SMN主题时，服务可以通过将消息负载作为参数传递（[SMN示例事件]）来调用FunctionGraph函数，FunctionGraph函数代码可以处理事件，比如将消息发布到其他SMN主题或将消息发送到其他云服务。 SMN消息触发的使用过程请参考[使用SMN触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0202.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 对象存储服务 OBS             | 可以编写FunctionGraph函数来处理OBS存储桶事件，例如对象创建事件或对象删除事件（[OBS示例事件]）。当用户将一张照片上传到存储桶时，OBS存储桶调用FunctionGraph函数，实现读取图像和创建照片缩略图。 OBS对象操作触发函数的过程请参考： - [使用OBS触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html)  - [使用EventGrid触发器（OBS应用事件源）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0228.html)                                                                                                                                                                                                                                                |
| 事件网格服务 EventGrid       | 可以编写FunctionGraph函数来处理EventGrid的通知，在将消息发布到EG事件源时，服务可以通过将消息负载作为参数传递（[EG示例事件]）来调用FunctionGraph函数。FunctionGraph函数代码可以处理事件，比如将消息发送到其他云服务。 EventGrid的触发使用支持以下事件源： - [使用EventGrid触发器（OBS应用事件源）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0228.html)  - [使用EventGrid触发器（RocketMQ自定义事件源）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0227.html)  - [使用EventGrid触发器（RabbitMQ自定义事件源）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0400.html)   |
   
#### 云服务触发事件示例
定时触发器（TIMER）
- TIMER示例事件，具体参数解释参考[表3]。
  ```
  {
      "version": "v2.0",
      "time": "2023-06-01T08:30:00+08:00",
      "trigger_type": "TIMER",
      "trigger_name": "Timer_001",
      "user_event": "User Event"
  }
  ```
   表3TIMER示例事件参数说明 
  | 参数           | 类型     | 描述                      |
  |:---|:---|:---|
  | version      | String | 事件协议的版本。                |
  | time         | String | 事件发生时间，ISO 8601 标准时间格式。 |
  | trigger_type | String | 触发器类型。                  |
  | trigger_name | String | 触发器名称。                  |
  | user_event   | String | 在创建触发器时配置的附加信息。         |
     
  
 
API网关服务（APIG专享版）触发器
- API网关示例事件，具体参数解释参考[表4]。
  ```
  {
      "body": "",
      "requestContext": {
          "apiId": "bc1dcffd-aa35-474d-897c-d53425a4c08e",
          "requestId": "11cdcdcf33949dc6d722640a13091c77",
          "stage": "RELEASE"
      },
      "queryStringParameters": {
          "responseType": "html"
      },
      "httpMethod": "GET",
      "pathParameters": {},
      "headers": {
          "accept-language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
          "accept-encoding": "gzip, deflate, br",
          "x-forwarded-port": "443",
          "x-forwarded-for": "103.218.216.98",
          "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "upgrade-insecure-requests": "1",
          "host": "50eedf92-c9ad-4ac0-827e-d7c11415d4f1.apigw.region.cloud.com",
          "x-forwarded-proto": "https",
          "pragma": "no-cache",
          "cache-control": "no-cache",
          "x-real-ip": "103.218.216.98",
          "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0"
      },
      "path": "/apig-event-template",
      "isBase64Encoded": true
  }
  ```
   表4APIG示例事件参数说明 
  | 参数                    | 类型      | 描述                              |
  |:---|:---|:---|
  | body                  | String  | 记录实际请求转换为String字符串后的内容。         |
  | requestContext        | Map     | 请求来源的API网关的配置信息、请求标识、认证信息、来源信息。 |
  | httpMethod            | String  | 记录实际请求的HTTP方法。                  |
  | queryStringParameters | Map     | 记录在API网关中配置过的Query参数以及实际取值。     |
  | pathParameters        | Map     | 记录在API网关中配置过的Path参数以及实际取值。      |
  | headers               | Map     | 记录实际请求的完整Header内容。              |
  | path                  | String  | 记录实际请求的完整的Path信息。               |
  | isBase64Encoded       | Boolean | 默认为true。                        |
     
  **约束与限制：**
  - 通过APIG服务调用函数服务时，isBase64Encoded的值默认为true，表示APIG传递给FunctionGraph的请求体body已经进行Base64编码，需要先对body内容Base64解码后再处理。
  
  - 函数必须按以下结构返回字符串。
    ```
    {
        "isBase64Encoded": true|false,
        "statusCode": httpStatusCode,
        "headers": {"headerName":"headerValue",...},
        "body": "..."
    }
    ```
    
   
 
云审计服务（CTS）触发器
- 云审计服务CTS示例事件，具体参数解释参考[表5]。
  ```
  {
      "cts": {
          "time": 1529974447000,
          "user": {
              "name": "userName",
              "id": "5b726c4fbfd84821ba866bafaaf56aax",
              "domain": {
                  "name": "domainName",
                  "id": "b2b3853af40448fcb9e40dxj89505ba"
              }
          },
          "request": {},
          "response": {},
          "code": 204,
          "service_type": "FunctionGraph",
          "resource_type": "graph",
          "resource_name": "workflow-2be1",
          "resource_id": "urn:fgs:region:projectId:graph:workflow-2be1",
          "trace_name": "deleteGraph",
          "trace_type": "ConsoleAction",
          "record_time": 1529974447000,
          "trace_id": "69be64a7-0233-11e8-82e4-e5d37911193e",
          "trace_status": "normal"
      }
  }
  ```
   表5CTS示例事件参数说明 
  | 参数            | 类型     | 描述                              |
  |:---|:---|:---|
  | time          | Long   | 本次请求的时间，13位时间戳格式。               |
  | user          | Map    | 本次请求的发起用户信息。                    |
  | request       | Map    | 事件请求内容。                         |
  | response      | Map    | 事件响应内容。                         |
  | code          | Int    | 事件响应码，例如200、400。                |
  | service_type  | String | 发送方的简写，比如vpc，ecs等。              |
  | resource_type | String | 发送方资源类型，比如vm，vpn等。              |
  | resource_name | String | 资源名称，例如ECS服务中某个虚拟机的名称。          |
  | trace_name    | String | 事件名称，例如：startServer, shutDown等。 |
  | trace_type    | String | 事件发生源头类型，例如ApiCall。             |
  | record_time   | Long   | CTS服务接收到这条trace的时间，13位时间戳格式。    |
  | trace_id      | String | 事件的唯一标识符。                       |
  | trace_status  | String | 事件的状态。                          |
     
  
 
文档数据库服务（DDS）触发器
- 文档数据库服务DDS示例事件，具体参数解释参考[表6]。
  ```
  {
      "records": [
          {
              "event_source": "dds",
              "event_name": "insert",
              "region": "region",
              "event_version": "1.0",
              "dds": {
                  "size_bytes": "100",
                  "token": "{\"_data\": \"825D8C2F4D0000001529295A100474039A3412A64BA89041DC952357FB4446645F696400645D8C2F8E5BECCB6CF5370D6A0004\"}",
                  "full_document": "{\"_id\": {\"$oid\": \"5d8c2f8e5beccb6cf5370d6a\"},\"name\": \"dds\",\"age\": {\"$numberDouble\": \"52.0\"}}",
                  "ns": "{\"db\": \"functiongraph\",\"coll\": \"person\"}"
              },
              "event_source_id": "e6065860-f7b8-4cca-80bd-24ef2a3bb748"
          }
      ]
  }
  ```
   表6DDS示例事件参数说明 
  | 参数              | 类型     | 描述            |
  |:---|:---|:---|
  | region          | String | DDS实例所在区域。    |
  | event_version   | String | 事件协议的版本。      |
  | event_source    | String | 事件来源。         |
  | event_name      | String | 事件名称。         |
  | size_bytes      | Int    | 消息的字节数。       |
  | token           | String | Base64编码后的数据。 |
  | full_document   | String | 完整的文件信息。      |
  | ns              | String | 列名。           |
  | event_source_id | String | 事件源唯一标识符。     |
     
  
 
数据接入服务（DIS）触发器
- 数据接入服务DIS示例事件，具体参数解释参考[表7]。
  ```
  {
      "ShardID": "shardId-0000000000",
      "Message": {
          "next_partition_cursor": "eyJnZXRJdGVyYXRvclBhcmFtIjp7InN0cmVhbS1uYW1lIjoiZGlzLXN3dGVzdCIsInBhcnRpdGlvbi1pZCI6InNoYXJkSWQtMDAwMDAwMDAwMCIsImN1cnNvci10eXBlIjoiVFJJTV9IT1JJWk9OIiwic3RhcnRpbmctc2VxdWVuY2UtbnVtYmVyIjoiNCJ9LCJnZW5lcmF0ZVRpbWVzdGFtcCI6MTUwOTYwNjM5MjE5MX0",
          "records": [
              {
                  "partition_key": "shardId_0000000000",
                  "data": "d2VsY29tZQ==",
                  "sequence_number": "0"
              },
              {
                  "partition_key": "shardId_0000000000",
                  "data": "dXNpbmc=",
                  "sequence_number": "1"
              },
              {
                  "partition_key": "shardId_0000000000",
                  "data": "RnVuY3Rpb25TdGFnZQ==",
                  "sequence_number": "2"
              },
              {
                  "partition_key": "shardId_0000000000",
                  "data": "c2VydmljZQ==",
                  "sequence_number": "3"
              }
          ],
          "millis_behind_latest": ""
      },
      "Tag": "latest",
      "StreamName": "dis-swtest"
  }
  ```
   表7DIS示例事件参数说明 
  | 参数                    | 类型     | 描述                     |
  |:---|:---|:---|
  | ShardID               | String | 数据下载分区的ID。             |
  | next_partition_cursor | String | 下一个分区的游标。              |
  | Records               | Map    | 存储在DIS通道中的数据单元。        |
  | partition_key         | String | 分区键。                   |
  | data                  | String | 数据块，由数据生产者添加到数据通道。     |
  | sequence_number       | Int    | 每个记录的唯一标识符，由DIS服务自动分配。 |
  | Tag                   | String | 通道的标签。                 |
  | StreamName            | String | 通道名称。                  |
     
  
 
分布式消息服务 Kafka（KAFKA）触发器/开源Kafka（OPENSOURCEKAFKA）触发器
- Kafka示例事件，具体参数解释参考[表8]。
  ```
  {
      "event_version": "v1.0",
      "event_time": 1576737962,
      "trigger_type": "KAFKA",
      "region": "region",
      "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b",
      "records": [
          {
              "messages": [
                  "kafka message1",
                  "kafka message2",
                  "kafka message3",
                  "kafka message4",
                  "kafka message5"
              ],
              "topic_id": "topic-test"
          }
      ]
  }
  ```
   表8Kafka示例事件参数说明 
  | 参数            | 类型     | 描述                |
  |:---|:---|:---|
  | event_version | String | 事件协议的版本。          |
  | event_time    | String | 事件发生时间。           |
  | trigger_type  | String | 事件类型。             |
  | region        | String | Kafka实例所在地域。      |
  | instance_id   | String | 创建的Kafka实例的唯一标识符。 |
  | messages      | String | 消息内容。             |
  | topic_id      | String | 消息的唯一标识符。         |
     
  
 
分布式消息服务 RabbitMQ版（RABBITMQ）触发器
- 分布式消息服务RabbitMQ示例事件，具体参数解释参考[表9]。
  ```
  {
      "event_version": "v1.0",
      "event_time": 1576737962,
      "trigger_type": "RABBITMQ",
      "region": "region",
      "records": [
          {
              "messages": [
                  "rabbitmq message1",
                  "rabbitmq message2",
                  "rabbitmq message3",
                  "rabbitmq message4",
                  "rabbitmq message5"
              ],
              "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b",
              "exchange": "exchange-test"
          }
      ]
  }
  ```
   表9分布式消息服务RabbitMQ参数说明 
  | 参数            | 类型     | 描述                   |
  |:---|:---|:---|
  | event_version | String | 事件协议的版本。             |
  | region        | String | RabbitMQ实例所在的地域。     |
  | instance_id   | String | 创建的RabbitMQ实例的唯一标识符。 |
     
  
 
云数据库GeminiDB MongoDB触发器
- 云数据库 GeminiDB MongoDB示例事件，具体参数解释参考[表10]。
  ```
  {
      "records": [
          {
              "event_name": "\"insert\"",
              "event_version": "1.0",
              "event_source": "gauss_mongo",
              "region": "cn-north-xx",
              "gauss_mongo": {
                  "full_document": "{\"_id\": {\"$oid\":\"5f61de944778db5fcded3f87\"},\"zhangsan\": \"zhangsan\"}",
                  "ns": "{\"db\": \"zhangsan\",\"coll\": \"zhangsan\"}",
                  "size_bytes": "100",
                  "token": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}"
              },
              "event_source_id": "51153d19-2b7d-402c-9a79-757163258a36"
          }
      ],
      "vernier": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}"
  }
  ```
   表10GeminiDB MongoDB示例事件参数说明 
  | 参数              | 类型     | 描述               |
  |:---|:---|:---|
  | region          | String | GeminiDB实例所在的地域。 |
  | event_source    | String | 事件的来源。           |
  | event_version   | String | 事件协议的版本。         |
  | full_document   | String | 完整的文件信息。         |
  | size_bytes      | Int    | 消息的字节数。          |
  | token           | String | Base64编码后的数据。    |
  | event_source_id | String | 事件源唯一标识符。        |
  | vernier         | String | 游标。              |
     
  
 
云数据库GeminiDB DynamoDB触发器
- 云数据库 GeminiDB DynamoDB示例事件，具体参数解释参考[表11]。
  ```
  {
       "event_time": 1747905781,
       "trigger_type": "DYNAMODB",
       "instance_ip": "10.0.0.205",
       "table_name": "test_052201",
       "records": [
           {
               "region": "ddbhws",
               "event_id": "000001747880625259000",
               "event_name": "INSERT",
               "sequence_number": "000001747880625259000",
               "size_bytes": 170,
               "stream_view_type": "NEW_AND_OLD_IMAGES",
               "approximate_arrival_timestamp": "2025-05-22T02:23:45.259Z",
               "keys": {
                   "Title": {
                       "S": "test"
                   },
                   "Year": {
                       "N": "2025"
                   }
               },
               "old_image": {
               },
               "new_image": {
                   "Plot": {
                       "S": "plot"
                   },
                   "Rating": {
                       "N": "1"
                   },
                   "Title": {
                       "S": "test"
                   },
                   "Year": {
                       "N": "2025"
                   }
               }
           },
           {
               "region": "ddbhws",
               "event_id": "000001747881021099000",
               "event_name": "MODIFY",
               "sequence_number": "000001747881021099000",
               "size_bytes": 323,
               "stream_view_type": "NEW_AND_OLD_IMAGES",
               "approximate_arrival_timestamp": "2025-05-22T02:30:21.099Z",
               "keys": {
                   "Title": {
                       "S": "test"
                   },
                   "Year": {
                       "N": "2025"
                   }
               },
               "old_image": {
                   "Plot": {
                       "S": "plot"
                   },
                   "Rating": {
                       "N": "1"
                   },
                   "Title": {
                       "S": "test"
                   },
                   "Year": {
                       "N": "2025"
                   }
               },
               "new_image": {
                   "Plot": {
                       "S": "plot"
                   },
                   "Rating": {
                       "N": "2"
                   },
                   "Title": {
                       "S": "test"
                   },
                   "Year": {
                       "N": "2025"
                   }
               }
           }
       ]
   }
  ```
   表11GeminiDB DynamoDB示例事件参数说明 
  | 参数                          | 类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  |:---|:---|:---|
  | EventTime                   | Int    | 触发器拉取完消息时的时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | TriggerType                 | String | 触发器类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | InstanceIp                  | String | DynamoDB的实例IP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | TableName                   | String | DynamoDB的表名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | Region                      | String | 局点信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | EventId                     | String | 事件ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | EventName                   | String | 事件类名,枚举示例表示分别为插入，更改，删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | SequenceNumber              | String | 事件序列号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | SizeBytes                   | Int    | 事件消息大小。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | StreamViewType              | String | 记录方式。 枚举值： - NEW_IMAGE：新镜像  - OLD_IMAGE：旧镜像  - NEW_AND_OLD_IMAGES：新旧镜像  - KEYS_ONLY：仅主键   |
  | ApproximateArrivalTimestamp | String | 事件入库时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | Keys                        | Map    | 主键。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | OldImage                    | Map    | 旧镜像。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | NewImage                    | Map    | 新镜像。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     
  
- 设备接入服务IoTDA示例事件，具体参数解释参考[表12]。
  ```
  {
  "resource" : "device",
  "event" : "create",
  "event_time" : "20240919T011335Z",
  "event_time_ms" : "2024-09-19T01:13:35.854Z",
  "request_id" : "75127474-1a26-4578-8847-3128d6101954",
  "notify_data" : {
  "body" : {
  "app_id" : "3d40caf3ddfc4e83815b54b50f13aad7",
  "app_name" : "DefaultApp_6439vdv2",
  "device_id" : "66eb7a0ffa8d9c36870c6892_ttytytytytytyt",
  "node_id" : "ttytytytytytyt",
  "gateway_id" : "66eb7a0ffa8d9c36870c6892_ttytytytytytyt",
  "node_type" : "GATEWAY",
  "auth_info" : {
  "auth_type" : "SECRET",
  "secure_access" : false,
  "timeout" : 0
  },
  "product_id" : "66eb7a0ffa8d9c36870c6892",
  "product_name" : "test",
  "status" : "INACTIVE",
  "create_time" : "20240919T011335Z"
  }
  }
  }
  ```
   表12IoTDA示例事件参数说明 
  | 参数            | 类型                                                          | 描述                                                      |
  |:---|:---|:---|
  | resource      | string                                                      | 数据来源，包括：设备、设置属性、设备消息、设备消息状态、设备状态、产品、设备异步命令状态、运行日志、批量任务。 |
  | event         | string                                                      | 触发事件。                                                   |
  | event_time    | string                                                      | 字符串格式的事件触发时间。                                           |
  | event_time_ms | string                                                      | datetime格式的事件触发时间。                                      |
  | request_id    | string                                                      | 请求id。                                                   |
  | notify_data   | object 参见[表13] | 推送消息。                                                   |
     
   表13NotifyData 
  | 参数   | 类型                                                       | 描述      |
  |:---|:---|:---|
  | body | object参见[表14] | 推送消息内容。 |
     
   表14NotifyDataBody 
  | 参数           | 类型                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  |:---|:---|:---|
  | app_id       | string                                                   | 资源空间ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | app_name     | string                                                   | 资源空间名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | device_id    | string                                                   | 设备ID，用于唯一标识一个设备。在注册设备时直接指定，或者由物联网平台分配获得。由物联网平台分配时，生成规则为"product_id" + "_" + "node_id"拼接而成。 最大长度：256                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | node_id      | string                                                   | 设备标识码，通常使用IMEI、MAC地址或Serial No作为nodeId。 最大长度：64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | gateway_id   | string                                                   | 网关ID，用于标识设备所属的父设备，即父设备的设备ID。当设备是直连设备时，gateway_id与设备的device_id一致。当设备是非直连设备时，gateway_id为设备所关联的父设备的device_id。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | node_type    | string                                                   | 设备节点类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | product_id   | string                                                   | 设备关联的产品ID，用于唯一标识一个产品模型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | product_name | string                                                   | 设备关联的产品名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | status       | string                                                   | 设备的状态。 - ONLINE：设备在线  - OFFLINE：设备离线  - ABNORMAL：设备异常  - INACTIVE：设备未激活  - FREEZED：设备冻结   |
  | create_time  | string                                                   | 在物联网平台注册设备的时间。格式：yyyyMMdd'T'HHmmss'Z'，如20151212T121212Z。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | auth_info    | Object参见[表15] | 设备的接入认证信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     
   表15AuthInfo 
  | 参数            | 类型      | 描述                                                                                                                                                                                                                                                                                                                       |
  |:---|:---|:---|
  | auth_type     | string  | 鉴权类型。支持密钥认证接入(SECRET)和证书认证接入(CERTIFICATES)两种方式。使用密钥认证接入方式(SECRET)填写secret字段，使用证书认证接入方式(CERTIFICATES)填写fingerprint字段，不填写auth_type默认为密钥认证接入方式(SECRET)。                                                                                                                                                                     |
  | secure_access | Boolean | 指设备是否通过安全协议方式接入，默认值为true。 - true：通过安全协议方式接入。  - false：通过非安全协议方式接入。   |
  | timeout       | Integer | 设备验证码的有效时间，单位：秒，默认值：0。若设备在有效时间内未接入物联网平台并激活，则平台会删除该设备的注册信息。若设置为"0"，则表示设备验证码不会失效（建议填写为"0"）。注意：只有注册设备接口或者修改设备接口修改timeout时返回该参数。 最小值：0 最大值：2147483647 缺省值：0                                            |
     
  具体的设备相关消息请以IoTDA官网为准，例如设备添加：[设备添加通知](https://support.huaweicloud.com/api-iothub/iot_06_v5_01206.html)。
  
 
云日志服务（LTS）触发器
- 云日志服务LTS示例事件，具体参数解释参考[表16]。
  ```
  {
      "lts": {
          "data": "eyJsb2dzIjoiW3tcIm1lc3NhZ2VcIjpcIjIwMTgtMDgtMDgvMDg6MDg6MDggW1dSTl0gW3Rlc3QuZ286MDhdVGhpcyBpcyBhIHRlc3QgbWVzc2FnZS5cIixcInRpbWVcIjoxNTMwMDA5NjUzMDU5LFwiaG9zdF9uYW1lXCI6XCJlY3MtdGVzdFwiLFwiaXBcIjpcIjE5Mi4xNjguMS4xXCIsXCJwYXRoXCI6XCJ2YXIvbG9nL3Rlc3QubG9nXCIsXCJsb2dfdWlkXCI6XCI2NjNkNjkzMC03OTJkLTExZTgtOGIwOC0yODZlZDQ4OGNlNzBcIixcImxpbmVfbm9cIjoxfV0iLCJvd25lciI6IjYyODBlMTcwYmQ5MzRmNjBhNGQ4NTFjZjVjYTA1MTI5IiwibG9nX2dyb3VwX2lkIjoiOTdhOWQyODQtNDQ0OC0xMWU4LThmYTQtMjg2ZWQ0ODhjZTcwIiwibG9nX3RvcGljX2lkIjoiMWE5Njc1YTctNzg0ZC0xMWU4LTlmNzAtMjg2ZWQ0ODhjZTcwIn0="
      }
  }
  ```
   表16LTS示例事件参数说明 
  | 参数   | 类型     | 描述            |
  |:---|:---|:---|
  | data | String | Base64编码后的数据。 |
     
  
 
消息通知服务（SMN）触发器
- 消息通知服务SMN示例事件，具体参数解释参考[表17]。
  ```
  {
      "record": [
          {
              "event_version": "1.0",
              "smn": {
                  "topic_urn": "topicUrn",
                  "timestamp": "2018-01-09T07:11:40Z",
                  "message_attributes": null,
                  "message": "this is smn message content",
                  "type": "notification",
                  "message_id": "a51671f77d4a479cacb09e2cd591a983",
                  "subject": "this is smn message subject"
              },
              "event_subscription_urn": "functionUrn",
              "event_source": "smn"
          }
      ],
      "functionname": "test",
      "requestId": "7c307f6a-cf68-4e65-8be0-4c77405a1b2c",
      "timestamp": "Tue Jan 09 2018 15:11:40 GMT+0800 (CST)"
  }
  ```
   表17SMN示例事件参数说明 
  | 参数                     | 类型     | 描述                                                                          |
  |:---|:---|:---|
  | event_version          | String | 事件协议的版本。                                                                    |
  | topic_urn              | String | SMN事件唯一编号，由SMN服务生成。                                                         |
  | type                   | String | 事件的类型。                                                                      |
  | requestId              | String | 请求ID，由FunctionGraph生成。 每个请求的ID取值唯一。 |
  | message_id             | String | 消息ID，由SMN服务生成。 每条消息的ID取值唯一。        |
  | message                | String | 消息内容。                                                                       |
  | event_source           | String | 事件源。                                                                        |
  | event_subscription_urn | String | 函数订阅的URN，取值唯一，可在函数详情页获取。                                                    |
  | timestamp              | String | 事件发生的时间。                                                                    |
     
  
 
对象存储服务（OBS）触发器
- 对象存储服务OBS示例事件，具体参数解释参考[表18]。
  ```
  {
      "Records": [
          {
              "eventVersion": "2.0",
              "eventTime": "2018-01-09T07:50:50.028Z",
              "requestParameters": {
                  "sourceIPAddress": "103.218.216.125"
              },
              "s3": {
                  "configurationId": "UK1DGFPYUKUZFHNQ00000160CC0B471D101ED30CE24DF4DB",
                  "object": {
                      "eTag": "9d377b10ce778c4938b3c7e2c63a229a",
                      "sequencer": "00000000160D9E681484D6B4C0000000",
                      "key": "job.png",
                      "size": 777835
                  },
                  "bucket": {
                      "arn": "arn:aws:s3:::syj-input2",
                      "name": "functionstorage-template",
                      "ownerIdentity": {
                          "PrincipalId": "0ed1b73473f24134a478962e631651eb"
                      }
                  }
              },
              "Region": "{region}",
              "eventName": "ObjectCreated:Post",
              "userIdentity": {
                  "principalId": "9bf43789b1ff4b679040f35cc4f0dc05"
              }
          }
      ]
  }
  ```
   表18OBS示例事件参数说明 
  | 参数              | 类型     | 描述                                                             |
  |:---|:---|:---|
  | eventVersion    | String | 事件协议的版本                                                        |
  | eventTime       | String | 事件产生的时间 使用ISO-8601标准时间格式 |
  | sourceIPAddress | String | 请求的源IP地址                                                       |
  | s3              | Map    | OBS事件内容                                                        |
  | object          | Map    | object参数内容                                                     |
  | bucket          | Map    | bucket参数内容                                                     |
  | arn             | String | Bucket的唯一标识符                                                   |
  | ownerIdentity   | Map    | 创建Bucket的用户ID                                                  |
  | Region          | String | Bucket所在的地域                                                    |
  | eventName       | String | 配置的触发函数的事件                                                     |
  | userIdentity    | Map    | 请求发起者的华为云账号ID                                                  |
     
  
 
EventGrid触发器
- 事件网格服务EventGrid示例事件，具体参数解释参考[表19]。
  **RocketMQ自定义事件源**：
  ```
  {
      "datacontenttype": "application/json",
      "data": {
          "context": "yyyyy"
      },
      "subject": "ROCKETMQ:region:domainId/projectId:ROCKETMQ:eventSourceName",
      "specversion": "1.0",
      "id": "016d5bd3-6231-4e9e-86ef-e451a070d598",
      "source": "eventSourceName",
      "time": "2023-04-07T11:51:10Z",
      "type": "ROCKETMQ:CloudTrace:RocketmqCall"
  }
  ```
  **RabbitMQ自定义事件源**：
  ```
  {
  "datacontenttype": "application/json",
      "data": {
          "context": "yyyyy"
      },
      "subject": "RABBITMQ:region:domainId/projectId:RABBITMQ:eventSourceName",
      "specversion": "1.0",
      "id": "016d5bd3-6231-4e9e-86ef-e451a070d598",
      "source": "eventSourceName",
      "time": "2023-04-07T11:51:10Z",
      "type": "RABBITMQ:CloudTrace:RabbitmqCall"
  }
  ```
  **OBS应用事件源：**
  ```
  {
      "channel_id":"b65779ed-d9d0-4a6c-b312-c767226964cf",
      "description":"",
      "name":"subscription-xeak",
      "sources":[
          {
              "id":null,
              "name":"HC.OBS.DWR",
              "detail":{
                  "bucket":"eventbucket",
                  "objectKeyEncode":true
              },
              "filter":{
                  "source":[
                      {
                          "op":"StringIn",
                          "values":[
                              "HC.OBS.DWR"
                          ]
                      }
                  ],
                  "type":[
                      {
                          "op":"StringIn",
                          "values":[
                              "OBS:DWR:ObjectCreated:PUT",
                              "OBS:DWR:ObjectCreated:POST"
                          ]
                      }
                  ],
                  "subject":{
                      "and":[
                          {
                              "op":"StringStartsWith",
                              "values":[
                                  "/ddd"
                              ]
                          }
                      ]
                  },
                  "data":{
                      "obs":{
                          "bucket":{
                              "name":[
                                  {
                                      "op":"StringIn",
                                      "values":[
                                          "output-your"
                                      ]
                                  }
                              ]
                          }
                      }
                  }
              },
              "provider_type":"OFFICIAL"
          }
      ],
      "targets":[
          {
              "id":null,
              "name":"HC.FunctionGraph",
              "detail":{
                  "urn":"urn:fss:cn-north-7:c53626012ba84727b938ca8bf03108ef:function:A-nodejs-lqz:pylog:latest",
                  "agency_name":"EG_AGENCY"
              },
              "dead_letter_queue":null,
              "provider_type":"OFFICIAL",
              "transform":{
                  "type":"ORIGINAL",
                  "value":""
              }
          }
      ]
  }
  ```
   表19EG示例事件参数说明 
  | 参数              | 类型     | 描述     |
  |:---|:---|:---|
  | datacontenttype | String | 数据类型   |
  | data            | Map    | 数据     |
  | subject         | String | 目标值    |
  | specversion     | String | 版本     |
  | id              | String | 唯一键值   |
  | source          | String | 来源名称   |
  | time            | String | 发布订阅时间 |
  | type            | String | 订阅类型   |
     
  
 
