
# 使用数据接入服务（DIS）触发器
本节介绍如何通过函数工作流控制台创建数据接入服务DIS触发器，实现使用系统内置的事件模板配置DIS事件，触发函数运行。
#### DIS触发器触发事件说明
数据接入服务DIS（Data Ingestion Service）为处理或分析流数据的自定义应用程序构建数据流管道，主要解决云服务外的数据实时传输到云服务内的问题。数据接入服务每小时可从多种数据源中连续捕获、传送和存储数TB数据。
使用DIS触发器可以将FunctionGraph函数配置为自动轮询流并处理新记录，例如网站点击流、财务交易记录、社交媒体源、IT日志和数据位置跟踪事件等。FunctionGraph会定期轮询DIS数据流中的新记录。
DIS触发器的示例事件
- DIS触发器会按照以下事件格式触发函数，具体参数解释参考[表1]。
  ```
  {
      "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"
  }
  ```
   表1DIS示例事件参数说明 
  | 参数                    | 类型     | 描述                     |
  |:---|:---|:---|
  | ShardID               | String | 数据下载分区的ID。             |
  | next_partition_cursor | String | 下一个分区的游标。              |
  | Records               | Map    | 存储在DIS通道中的数据单元。        |
  | partition_key         | String | 分区键。                   |
  | data                  | String | 数据块，由数据生产者添加到数据通道。     |
  | sequence_number       | Int    | 每个记录的唯一标识符，由DIS服务自动分配。 |
  | Tag                   | String | 通道的标签。                 |
  | StreamName            | String | 通道名称。                  |
     
  
 
#### 操作视频
本视频介绍如何在函数中使用DIS触发器，并通过配置测试事件测试函数能否正常执行。
因产品功能演进，操作界面可能存在差异，相关视频仅供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object15621133344912" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/functiongraph-video/1751251948270212191.mp4" title="使用DIS触发器" poster="https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002349520128.jpg" style="width:100%;height:auto;max-width:600px"></video>
#### 约束与限制
- DIS触发器支持使用的区域和具体运行时函数请以控制台展示为准。
- DIS触发器调用的请求正文有效负载大小为6M。
 
#### 前提条件
- **函数及其配置：**
  - 已[创建函数](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0153.html)。
  
  - 已配置函数的DIS委托权限，操作过程请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。
   
- **数据接入服务DIS：**
  已创建DIS接入通道，此处以dis-function为例，创建过程请参见[创建DIS通道](https://support.huaweicloud.com/usermanual-dis/dis_01_0601.html)。
  
 
#### 创建DIS触发器
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击进入函数详情页。
3. 选择"设置 \> 触发器"，单击"创建触发器"，弹出"创建触发器"对话框。
4. 参考[表2]配置DIS触发器参数。
   
    表2DIS触发器参数说明 
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 取值样例         |
   |:---|:---|:---|
   | 触发器类型  | 必选参数。 选择"数据接入服务 (DIS)"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 数据接入服务 (DIS) |
   | 通道名称   | 必选参数。 选择已创建的DIS通道，支持选择普通通道和高级通道。若无接入通道，可单击"申请接入通道"完成创建，详情可参考[开通DIS通道](https://support.huaweicloud.com/usermanual-dis/dis_01_0601.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | dis-function |
   | 起始位置   | 必选参数。 选择数据流中开始读取数据的位置，起始位置对应DIS服务中的游标类型，用来选择从DIS通道中读取数据的位置，详情可参考：[获取数据游标](https://support.huaweicloud.com/api-dis/dis_02_0020.html)。 起始位置有以下选择： - TRIM_HORIZON：从最早被存储至分区的有效记录开始读取。 例如，某租户使用DIS的通道，分别上传了三条数据A1，A2，A3。N天后（设定A1已过期，A2和A3仍在有效期范围内），该租户需要下载此三条数据，并选择了TRIM_HORIZON这种下载方式。那么用户可下载的数据将从A2开始读取。   - latest：从分区中的最新记录开始读取，此参数可以保证总是读到分区中最新记录。   | latest       |
   | 最大字节数  | 必选参数。 每次触发时通道单次请求的记录的最大字节数，只有当分区中单条记录小于该值，才能被获取。单位可选择KB或MB。 - 通道类型为普通通道：单次请求的记录总大小不能超过1MB（不包含partitionKey数据大小），设置范围：0KB\~1024KB（0MB\~1MB）。  - 通道类型为高级通道：单次请求的记录总大小不能超过5MB（不包含partitionKey数据大小），设置范围：0KB\~5120KB（0MB\~5MB）。                                                                                                                                                                                                                      | 1 MB         |
   | 拉取周期   | 必选参数。 设置拉取流数据的周期，单位可选择秒或毫秒，设置范围：1ms\~60000ms（1s\~60s）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 30 秒         |
   | 串行处理数据 | 必选参数。 - 如果启用该选项，系统将在完成一次数据处理后，才获取下一次数据；否则只要到达拉取周期，系统就会获取数据进行处理。  - 如果关闭该选项，如[图1]所示，可根据业务需要配置并发数（范围：1-80）。 功能说明：控制DIS触发器异步调用函数的并发数，防止单个触发器流量较大导致单租户并发跑满，进而影响其他DIS触发器执行。（当前仅"北京四"区域支持该功能） 图1关闭"串行处理数据" ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002198142433.png "点击放大")                                                                                           | 开启           |
      
   
   
5. 单击"确定"，完成DIS触发器的创建。
 
#### 修改DIS触发器配置
DIS触发器创建后，支持对部分参数进行修改。
1. 返回函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击进入函数详情页。
3. 选择"设置 \> 触发器"，单击DIS触发器上的"编辑"，弹出"创建触发器"对话框。
4. 支持修改"最大字节数"、"拉取周期"和"串行处理数据"参数，修改完成后单击"确定"。
 
#### 配置DIS测试事件触发函数
1. 返回函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击进入函数详情页。
3. 在函数详情页，选择函数版本。
4. 在"代码"页签下，单击"测试"，弹出"配置测试事件"对话框。
5. 填写如[表3]所示测试信息后，单击"创建"。
   
    表3测试信息 
   | 参数     | 说明                                                                                      |
   |:---|:---|
   | 配置测试事件 | 可创建新的测试事件，也可编辑已有的测试事件。 选择默认值："创建新的测试事件"。         |
   | 事件模板   | 选择"数据接入服务（DIS）"模板，使用系统内置dis事件模板。                                                        |
   | 事件名称   | 事件名称必须以大写或小写字母开头，支持字母（大写或小写），数字和下划线"_"（或中划线"-"），并以字母或数字结尾，长度为1-25个字符。例如输入"dis-123test"。 |
   | 测试事件   | 自动加载系统内置dis事件模板，本例不做修改。                                                                 |
      
   
   
6. 单击"测试"，可以得到函数运行结果，函数会返回输入DIS数据。
 
#### 相关文档
除使用控制台外，函数工作流支持通过API的方式使用函数触发器，详情请参见[函数触发器API参考](https://support.huaweicloud.com/api-functiongraph/FunctionTriggers.html)。
