本实践将为您介绍通过 DataSail 数据集成 Rest_API 数据源,使用动态 Token 鉴权能力调用取数,将数据写入 MySQL 中。
随着企业数字化转型加速,数据量急剧增长且来源日益多样化。在业务场景中,通常采用 OpenAPI 方式进行取数验证,部分 OpenAPI 开启了动态 Token 的验证方式,您需通过 Refresh Token 方式定期获取动态 Token 信息。
在本次实践中,我们通过 Shell 任务获取动态 Token 信息,再将该信息传入下游数据集成任务中,来配置 Rest_API 到 MySQL 数据源通道任务,将 OpenAPI 中查询到的数据,传输至 MySQL 数据源库表下,进行深入分析。
已创建合适资源规格的独享数据集成资源组,并将其绑定至创建成功的 DataLeap 项目下。购买操作详见资源组管理,项目绑定操作详见数据集成资源组。
新建数据集成任务运行所需的 Rest_API 和 MySQL 数据源,具体操作如下:
登入 DataLeap 控制台。
选择具体项目后进入数据开发 > 数据源管理 > 自定义数据源,进入自定义数据源管理页面。
单击右上角新建数据源按钮,进入新建数据源页面。
依次完成以下数据源注册信息配置:
配置 Rest_API 数据源
参数 | 说明 |
---|---|
数据源类型 | 下拉可选 Rest_API 数据源类型。 |
接入方式 | 目前仅支持公网的接入方式。 |
数据源名称 | 数据源的名称,可自行设置。 |
数据源描述 | 数据源的描述信息。 |
REST_API参数配置 | |
API Url | 输入源端 API Url 链接地址。 |
默认请求头 | 默认的请求头格式,例如:{"Autzzzzzion":"Bexxxxet-toxxxn-1"},没有时可不填写。 |
验证方式 | REST_API数据源注册时,目前支持以下三种验证方式,您可根据实际场景选择鉴权模式:
此处无验证方式时,可选择 No auth。 |
配置 MySQL 数据源
参数 | 说明 |
---|---|
基本配置 | |
数据源类型 | MySQL |
接入方式 | 火山引擎 MySQL |
数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。如 doc_mysql |
参数配置 | |
RDS 实例 ID | 火山引擎云数据库MySQL的实例ID,下拉选择。 |
数据库名 | 下拉选择实例下,已创建的 MySQL 数据库名称。 |
用户名 | 有权限访问数据库的用户名信息。 |
密码 | 输入用户名对应的密码信息。 |
数据源信息配置完成后,选择已创建的独享集成资源组,并单击连通性测试按钮,测试网络连通情况。
连通成功后,单击确认按钮,完成数据源注册。
注意
任务名称信息仅允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需要在127个字符以内。
新建 Shell 任务完成后,在编辑器界面输入以下 Shell 逻辑,来实现数据服务 API 动态 Token 的获取。
!/bin/bash # 设置授权服务器的URL https://example.com/oauth/token AUTH_SERVER_URL="https://example.com/oauth/token" # 设置refresh token REFRESH_TOKEN="your_refresh_token_here" # 设置客户端ID和客户端密钥(如果需要) CLIENT_ID="your_client_id" CLIENT_SECRET="your_client_secret" # 使用curl发送POST请求,交换新的access token response=$(curl -s -X POST "$AUTH_SERVER_URL" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=refresh_token&refresh_token=$REFRESH_TOKEN&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET") # 提取access token access_token=$(echo $response | jq -r '.access_token') # 检查是否成功获取access token if [ -z "$access_token" ]; then echo $response echo "Failed to obtain access token. Response:" else echo "Access token obtained:" echo "$access_token" fi
脚本设置完成后,单击右侧执行设置按钮,进行 Shell 任务的计算资源组、镜像地址相关属性配置。
说明
当任务在脚本中访问公网、私有网络(VPC),或者访问有存在网络访问限制的镜像仓库地址时,您需要进行网络配置,选择能够与您资源互通的私有网络、子网、安全组信息。
网络配置操作详见4.2 网络配置(可选)。
执行设置选择完成后,进入右侧调度设置界面,进行 Shell 任务的调度属性、依赖关系、任务输出参数等设置。
其中在任务输出参数中,勾选”将运行结果当做输出“选项,便可自动生成输出参数”outputs“。
其余更多调度设置说明,详见“调度设置”。
Shell 任务配置完成后,单击编辑器上方的保存和提交按钮,保存任务配置并将其发布到运维中心。
数据集成任务新建完成后,进入到任务配置详情界面完成相关配置。
REST_API 离线读参数说明
参数 | 说明 |
---|---|
*数据源类型 | 您可下拉选择或输入关键词进行搜索REST_API数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的REST_API数据源,名称为:doc_rest_api |
*是否拼接header | 按需选择是否在REST_API中拼接header信息,此处选择是。 |
*Header 拼接值 | 当您选择需要拼接 header 时,Header 拼接值为必填项,您可在此输入具体的拼接值信息。 |
*请求Method | 选择请求 Method 方法,支持指定请求参数的传参位置。 |
请求参数 | 按需添加传递给API的请求参数信息,若创建 API 时无设定请求参数,可跳过。
|
*返回数据结构 | 根据实际接口返回数据的类型进行选择,此示例中选择数组数据结构。 |
*数据格式 | 仅支持json的格式。 |
数据存储json路径 | 输入数组数据存储的 json 路径,可为$(表示保存在根路径),或者类似aa.bb.cc的格式。此示例中路径为:data.list |
*预览数据 | 单击自动获取按钮,获得该API返回的预览数据,或直接填写想要获取的数据格式,如:
以此来获取源端需要读取数据的字段信息,方便字段映射时进行自动添加。 |
*请求次数 | 选择 reader 端是单次请求、多次请求或分页请求。 |
更多 Rest_API 源端配置说明详见配置 REST_API(HTTP形式)数据源。
MySQL 离线写说明
参数 | 说明 |
---|---|
*目标类型 | 数据去向目标类型选择 MySQL。 |
*数据源名称 | 已在数据源管理界面注册的 MySQL 数据源,下拉可选创建好的 doc_mysql 数据源。 |
*数据表 | 数据源下需数据写入的表名,下拉可选。 |
写入前准备语句 | 在执行该数据集成任务前,需要率先执行的 SQL 语句,通常是为了使任务重跑时支持幂等。 |
写入后准备语句 | 执行数据同步任务之后执行的 SQL 语句。例如写入完成后插入某条特殊的数据,标志导入任务执行结束。 |
*数据写入方式 | 下拉选择数据写入 MySQL 的方式,此实践中选择 insert into 写入方式,即当主键/唯一性索引冲突时会无法写入冲突的行,任务会运行失败。 说明 如果希望主键/唯一索引冲突时任务正常执行可以添加高级参数: |
更多 MySQL 源端配置说明详见配置 MySQL 数据源。
说明
手动搜索上游 Shell 任务时,您需确保上游任务已完成提交发布操作。
采用此方式配置 Shell 和数据集成任务,并发布至运维中心后,可耐心等待两个任务到达各自调度实例的执行时间点执行完成,便可进行数据结果验证操作。
如果您需要立即验证数据结果,也可在运维中心发起这两个任务的数据回溯操作,来快速验证 API 数据入湖结果。操作步骤如下:
回溯任务执行完成后,您便可通过数据开发 > 临时查询能力,查询落入 MySQL 库表中的实际数据。
在任务开发界面左侧导航栏中,进入临时查询界面。
单击新建查询按钮,新建 MySQL 查询任务。
在查询编辑界面,选择创建的 MySQL 数据源,编辑如下查询语句:
SELECT * from db.t_user;