阅读本文,您可以获取 Node SDK 数据迁移的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Node SDK 的安装及初始化操作。
本节为您介绍数据迁移相关接口的功能和调用示例。
您可以调用 CreateImageMigrateTask 接口创建数据迁移任务。详细的参数说明可参见 CreateImageMigrateTask 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function CreateImageMigrateTaskDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 任务信息 Task: { // 自定义迁移任务名称 Name: "migrate-test", // 迁移源信息 Source: { // 迁移云服务商。取值如下所示: // <li> OSS:阿里云 </li> // <li> COS:腾讯云 </li> // <li> KODO:七牛云 </li> // <li> BOS:百度云 </li> // <li> OBS:华为云 </li> // <li> Ucloud:Ucloud file </li> // <li> AWS:AWS 国际站 </li> // <li> S3:其他 S3 协议存储 </li> // <li> URL:以上传 URL 列表的方式迁移 </li> Vendor: "OSS", // 仅当Vendor 非 URL时为必填。 // Access Key,与 Secret Key 同时填写,为了保证有访问源数据桶的权限。 // <li> 请参考[云数据迁移准备](https://www.volcengine.com/docs/508/129213)获取对应阿里云OSS、腾讯云COS、七牛云KODO、百度云BOS、华为云OBS、 优刻得(Ucloud File)、AWS国际站的账号 AK/SK。 </li> // <li> 对于其他 S3 协议存储的AK/SK,请根据其具体源站信息填写。 </li> AK: "AKTP8shJDSYGbi8*****", // 仅当Vendor 非 URL时为必填。 // Secret Key,与 Access Key 同时填写,为了保证有访问源数据桶的权限。 // <li> 请参考[云数据迁移准备](https://www.volcengine.com/docs/508/129213)获取对应阿里云OSS、腾讯云COS、七牛云KODO、百度云BOS、华为云OBS、 优刻得(Ucloud File)、AWS国际站的账号 AK/SK。 </li> // <li> 对于其他 S3 协议存储的AK/SK,请根据其具体源站信息填写。 </li> SK: "PJDJSAJNNNCbE1E****", // Bucket 所在地区。仅当Vendor 非 URL/OSS/KODO/AWS时为必填。 // <li> 请参考[云数据迁移准备](https://www.volcengine.com/docs/508/129213)获取对应阿里云OSS、腾讯云COS、七牛云KODO、百度云BOS、华为云OBS、 优刻得(Ucloud File)、AWS国际站的 Bucket 地区。 </li> // <li> 对于其他 S3 协议存储的 Bucket 地区,请根据其具体源站信息填写。 </li> Region: "cn-beijing", // 源端 Bucket。 // <li> 仅当Vendor为URL时,需填写 URL 列表文件地址(公网 URL 地址)。 </li> // note: // 支持指定迁移文件和转码后迁移文件进行重命名,详见 [URL 列表迁移文件说明](https://www.volcengine.com/docs/508/1263268)。 // // <li> 当Vendor为其他时,请填写对应云服务商所需迁移数据的 Bucket 名称。您可参考[云数据迁移准备](https://www.volcengine.com/docs/508/129213)获取对应阿里云OSS、腾讯云COS、七牛云KODO、百度云BOS、华为云OBS、 优刻得(Ucloud File)、AWS国际站的 Bucket 名称。 </li> Bucket: "storage-test", // 仅当Vendor为S3时必填。 // S3 协议 Endpoint,需以http://或https://开头。请根据源站信息填写。 Endpoint: "https://s3.amazonaws.com", // 仅当Vendor 非 URL时为可填。 // 迁移源云服务商 CDN 域名,若不为空将使用该 CDN 域名下载三方云厂商的资源。 CdnHost: "my-bucket.oss-cn-hangzhou.aliyuncs.com", // 是否丢弃源 Header。取值如下所示: // <li> true:丢弃源 Header </li> // <li> false:(默认)保留源 Header </li> SkipHeader: false, // 仅迁移匹配的前缀列表文件。文件路径前缀无需包含桶名称,但需要完整路径。 // 默认为空,表示对该存储 Bucket 内资源执行全量迁移。若不为空,表示仅做部分迁移,即指定迁移的文件路径前缀。 Prefix: ["home/aaaa"], // 仅迁移匹配的正则表达式列表的文件。默认为空,表示对该存储 Bucket 内资源执行全量迁移。 // note: // <li> 多条正则表达式之间是"或"的关系,即源文件匹配任何一条正则表达式即视为符合迁移条件。 </li> // <li> 正则过滤规则需要遍历源桶中的全部文件,如果源桶中文件数量较多会降低迁移速度。 </li> Regex: [".png"], // 迁移文件起始时间点。仅迁移该查询时间段内新增或变更的文件。默认为空。 // 日期格式按照 ISO8601 表示法,格式为:YYYY-MM-DDThh:mm:ss±hh:mm,比如2019-06-02T00:00:00+08:00。 TimeStart: "2019-06-02T00:00:00+08:00", // 迁移文件结束时间点。默认为空。仅迁移该查询时间段内新增或变更的文件。 // 日期格式按照 ISO8601 表示法,格式为:YYYY-MM-DDThh:mm:ss±hh:mm,比如2019-06-02T00:00:00+08:00。 TimeEnd: "2019-06-03T00:00:00+08:00", }, // 转码配置 Transcode: { // 目标转码格式,仅针对静图执行转码策略。支持的格式有 png、jpeg、heic、avif、webp、vvic。 Format: "png", // 转码质量参数,取值范围为 [1,100]。对于 PNG 为无损压缩,其他格式下其值越小,压缩率越高,画质越差。 Quality: 75, // 包含透明通道的图片是否编码为降级格式。取值如下所示: // <li> true:降级 </li> // <li> false:(默认)不降级 </li> AlphaDemotion: true, // 降级编码格式,仅当AlphaDemotion为true时必填。支持的格式有 png、jpeg、heic、avif、webp、vvic。 DemotionFmt: "heic", // 转码是否保留 exif 信息。取值如下所示: // <li> true:保留 </li> // <li> false:(默认)不保留 </li> EnableExif: false, // 对带有 CMYK 色彩空间的图片,是否跳过转码处理直接存储原图。取值如下所示: // <li> true:是 </li> // <li> false:(默认)否 </li> SkipCMYK: false, // 仅当转码/降级格式为 heic、webp、jpeg 时生效。 // 是否开启自适应转码。 // <li> true:开启。开启后,将根据 Format 或者 DemotionFmt 指定格式进行自适应转码处理。 </li> // <li> false:(默认)关闭 </li> Adapt: false, }, // 目的信息 Dst: { // 迁移目标服务 ID,请提前[新建服务](https://www.volcengine.com/docs/508/357114#%E6%96%B0%E5%BB%BA%E6%9C%8D%E5%8A%A1)。 // <li> 您可以在veImageX 控制台[服务管理](https://console.volcengine.com/imagex/service_manage/)页面,在创建好的图片服务中获取服务 ID。 </li> // <li> 您也可以通过 OpenAPI 的方式获取服务 ID,具体请参考[获取所有服务信息](https://www.volcengine.com/docs/508/9360)。 </li> ServiceId: "uh**7j", // 源 Bucket 名称保留规则。取值如下所示: // <li> true:不保留,迁移后资源访问 URI 中,不保留迁移源的 Bucket 名称。 </li> // <li> false:(默认)保留,迁移后资源访问 URI 中,会保留迁移源的 Bucket 名称。 </li> SkipBucket: true, // 目标 key 前缀,即保存到到指定目录下。如需多重目录,请使用/分割,并以/结尾。 // 默认为空,表示迁移到根目录。 // <li> 使用非 URL 方式迁移到根目录时:迁移后 存储 Key 与源存储 Bucket 的文件存储 Key 相同。 </li> // <li> 使用 Url 方式迁移到根目录时:迁移后存储 Key 与源 URL 中 Path 值相同。 </li> Prefix: "aaa/bbb/ccc/", // 同名文件覆盖规则配置。取值如下所示: // <li> 0:(默认)直接覆盖同名文件 </li> // <li> 1:增加文件名后缀,后缀为 任务 ID </li> // <li> 2:跳过同名文件,即不做迁移 </li> // note: // 同名文件指文件在对象存储中的访问 Key 相同的文件,调用 veImageX 服务时会用到文件访问 Key。 UploadConf: 0, }, // 迁移策略 RunStrategy: { // 源下载 QPS 限制。如取值不为空,则长度必须为 24,表示一天 24 小时内各小时的 QPS 限制值。默认无限制。 // <li> 取值为负值时,表示无限制 </li> // <li> 取值为 0 时,表示对应时间不允许迁移 </li> ReadQps: [ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, ], // 源下载流量限制。单位为 Byte。如取值不为空,则长度必须为24,表示一天 24 小时内各小时的流量限制值。默认无限制。 // <li> 取值为负值时,表示无限制 </li> // <li> 取值为 0 时,表示对应时间不允许迁移 </li> ReadRate: [ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, ], }, // 回调信息。配置后,当任务执行完成时,将往该回调配置地址发送任务回调信息。 CallbackCfg: { // 回调方法。仅支持取值为 http。 Method: "http", // 回调地址。Method取值http时,填写公网可访问的 URL 地址,任务结束将向该地址发送 HTTP POST 请求。具体回调参数请参考[回调内容](#回调参数)。 Addr: "http://test.com", // 回调信息中是否包含具体迁移任务条目信息。取值如下所示: // <li> true:包含。仅包含迁移成功的任务条目信息,迁移失败的任务列表请在迁移完成后调用 [ExportFailedMigrateTask](https://www.volcengine.com/docs/508/1261309) 接口获取。 </li> // <li> false:(默认)不包含。 </li> // warning // 若任务中包含的条目数量过多,会导致回调消息体过大,增加回调失败的风险。因此建议仅在任务中条目量级不超过十万时使用该参数。 IncludeEntry: false, // 任务维度自定义回调参数,最多可输入 1024 个任意类型字符,并在回调的 CallbackArgs 中返回。 CallbackArgs: "App1", }, }, }; const res = await imagexService.CreateImageMigrateTask(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 DeleteImageMigrateTask 接口删除迁移任务。详细的参数说明可参见 DeleteImageMigrateTask 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function DeleteImageMigrateTaskDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 任务地区(即任务目标服务的地区),默认空,返回国内任务。 // <li> cn:国内 </li> // <li> sg:新加坡 </li> Region: "cn", // 仅当任务状态为非Running时生效。 // 任务 ID,请参考 [GetImageMigrateTasks](https://www.volcengine.com/docs/508/1108670)获取返回的任务 ID。 TaskId: "648c15f764f3c4abd95ad044", }; const res = await imagexService.DeleteImageMigrateTask(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 UpdateImageTaskStrategy 接口更新迁移任务策略。详细的参数说明可参见 UpdateImageTaskStrategy 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function UpdateImageTaskStrategyDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 调整后的迁移策略 RunStrategy: { // 源下载 QPS 限制。如取值不为空,则长度必须为 24,表示一天 24 小时内各小时的 QPS 限制值。默认无限制。 // <li> 取值为负值时,表示无限制 </li> // <li> 取值为 0 时,表示对应时间不允许迁移 </li> ReadQps: [ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, ], // 源下载流量限制。单位为 Byte。如取值不为空,则长度必须为24,表示一天 24 小时内各小时的流量限制值。默认无限制。 // <li> 取值为负值时,表示无限制 </li> // <li> 取值为 0 时,表示对应时间不允许迁移 </li> ReadRate: [ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, ], }, // 任务ID,请参考[CreateImageMigrateTask](https://www.volcengine.com/docs/508/1009929)获取返回的任务 ID。 TaskId: "648c15f764f3c4abd95ad044", }; const res = await imagexService.UpdateImageTaskStrategy(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 RerunImageMigrateTask 接口重启迁移失败任务。详细的参数说明可参见 RerunImageMigrateTask 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function RerunImageMigrateTaskDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 任务地区(即任务目标服务的地区),默认空,返回国内任务。 // <li> cn:国内 </li> // <li> sg:新加坡 </li> Region: "cn", // 仅当任务状态为Partial时生效。 // 任务 ID,请参考 [GetImageMigrateTasks](https://www.volcengine.com/docs/508/1108670)获取返回的任务 ID。 TaskId: "648c15f764f3c4abd95ad044", }; const res = await imagexService.RerunImageMigrateTask(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 TerminateImageMigrateTask 接口结束迁移任务。详细的参数说明可参见 TerminateImageMigrateTask 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function TerminateImageMigrateTaskDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 任务地区(即任务目标服务的地区),默认空,返回国内任务。 // <li> cn:国内 </li> // <li> sg:新加坡 </li> Region: "cn", // 任务 ID,请参考 [GetImageMigrateTasks](https://www.volcengine.com/docs/508/1108670) 获取返回的任务 ID。 TaskId: "648c15f764f3c4abd95ad044 ", }; const res = await imagexService.TerminateImageMigrateTask(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 ExportFailedMigrateTask 接口导出迁移失败列表。详细的参数说明可参见 ExportFailedMigrateTask 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function ExportFailedMigrateTaskDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 任务地区(即任务目标服务的地区),默认空,返回国内任务。 // <li> cn:国内 </li> // <li> sg:新加坡 </li> Region: "cn", // 任务 ID,请参考[CreateImageMigrateTask](https://www.volcengine.com/docs/508/1009929)获取返回的任务 ID。 TaskId: "648c15f764f3c4abd95ad044", }; const res = await imagexService.ExportFailedMigrateTask(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 GetVendorBuckets 接口获取服务商 Bucket。详细的参数说明可参见 GetVendorBuckets 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function GetVendorBucketsDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 服务商。取值如下所示: // <li> OSS:阿里云 </li> // <li> COS:腾讯云 </li> // <li> KODO:七牛云 </li> // <li> BOS:百度云 </li> // <li> OBS:华为云 </li> // <li> Ucloud:Ucloud file </li> // <li> AWS:AWS 国际站 </li> // <li> S3:其他 S3 协议存储 </li> // <li> URL:以上传 URL 列表的方式迁移 </li> Vendor: "OSS", // Bucket 所在地区。仅当Vendor 非 URL/OSS/KODO/AWS 时为必填。 Region: "cn-beijing", // Access Key。是与 Secret Key 同时填写的,为了保证有访问源数据桶的权限。 AK: "AKTP8shJDSYGbi8*****", // Secret Key。是与 Access Key 同时填写的,为了保证有访问源数据桶的权限。 SK: "PJDJSAJNNNCbE1E****", // S3 协议 Endpoint,需以http://或https://开头。仅当Vendor为S3时必填。 Endpoint: "https://s3.amazonaws.com", }; const res = await imagexService.GetVendorBuckets(requestParam); console.log("res", res); } catch (err) { console.error(err); } }
您可以调用 GetImageMigrateTasks 接口获取迁移任务详情。详细的参数说明可参见 GetImageMigrateTasks 接口文档。
接口调用示例如下所示。
import { imagex } from "@volcengine/openapi"; export async function GetImageMigrateTasksDemo() { try { const imagexService = new imagex.ImagexService({ // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY accessKeyId: process.env.VOLC_ACCESSKEY, secretKey: process.env.VOLC_SECRETKEY, }); const requestParam = { // 任务地区(即任务目标服务的地区),缺省时将返回国内列表。取值如下所示: // <li> cn:国内 </li> // <li> sg:新加坡 </li> Region: "cn", // 任务 ID。 TaskId: "648c15f764f3c4abd95ad044", // 迁移的目标服务 ID。 ServiceId: "vu**yi", // 分页偏移量,用于控制分页查询返回结果的起始位置,以便对数据进行分页展示和浏览。默认值为 0。 // note: // 例如,指定分页条数 Limit = 10,分页偏移量 Offset = 10,表示从查询结果的第 11 条记录开始返回数据,共展示 10 条数据。 Offset: 0, // 分页查询时,显示的每页数据的最大条数。默认值为 10,最大值为 1000。 Limit: 10, // 返回任务名称中包含该值的迁移任务信息。 TaskNamePtn: "test", // 任务状态,填入多个时使用英文逗号分隔。取值如下所示: // <li> Initial:创建中 </li> // <li> Running:运行中 </li> // <li> Done:全部迁移完成 </li> // <li> Partial:部分迁移完成 </li> // <li> Failed:迁移失败 </li> // <li> Terminated:中止 </li> Status: "Done", }; const res = await imagexService.GetImageMigrateTasks(requestParam); console.log("res", res); } catch (err) { console.error(err); } }