You need to enable JavaScript to run this app.
veImageX

veImageX

复制全文
Golang SDK
数据迁移
复制全文
数据迁移

阅读本文,您可以获取 Go SDK 数据迁移的接口调用示例,实现快速开发。

说明

本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。

调用说明

  • 本文提供的接口调用示例均通过 AK 和 SK 初始化实例。
  • 接口的参数说明和错误码等信息可通过接口文档查看。

前提条件

调用接口前,请先完成 Go SDK 的安装及初始化操作。

调用示例

本节为您介绍数据迁移相关接口的功能和调用示例。

创建数据迁移任务

您可以调用 CreateImageMigrateTask 接口创建数据迁移任务。详细的参数说明可参见 CreateImageMigrateTask 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &imagex.CreateImageMigrateTaskBody{}

	// 任务信息
	Task := imagex.CreateImageMigrateTaskBodyTask{
		// 自定义迁移任务名称
		Name: "migrate-test",
	}

	// 迁移源信息
	Source := imagex.CreateImageMigrateTaskBodyTaskSource{
		// 迁移云服务商。取值如下所示:
		// <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****",
		// 仅当Vendor 非 URL/OSS/KODO/AWS时,为必填。
		// Bucket 所在地区。
		// <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",
		// <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,
		// 迁移文件起始时间点。仅迁移该查询时间段内新增或变更的文件。默认为空。
		// 日期格式按照 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",
		// 仅当 Vendor 取值 COS 时,为选填。不为空,表示使用桶清单方式进行数据迁移;若为空,将遍历指定 Bucket 内的文件后再进行迁移。
		// 桶清单 csv 文件在第三方云存储 Bucket 中的存储目录路径。该路径不携带域名和 csv 清单文件信息,需要以/结尾。您可参考[获取桶清单文件存储路径](https://www.volcengine.com/docs/508/1347855#%E8%8E%B7%E5%8F%96%E6%A1%B6%E6%B8%85%E5%8D%95%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8%E8%B7%AF%E5%BE%84)获取。
		BucketInventoryDir: "cos_bucket_inventory/1311434967/test/buctet1/20240924_145226/1311434967/test/buctet1_instant_20240924_145226/data/",
	}

	// 仅迁移匹配的前缀列表文件。文件路径前缀无需包含桶名称,但需要完整路径。
	// 默认为空,表示对该存储 Bucket 内资源执行全量迁移。若不为空,表示仅做部分迁移,即指定迁移的文件路径前缀。
	Prefix := []string{"home/aaaa"}

	Source.Prefix = Prefix

	// 仅迁移匹配的正则表达式列表的文件。默认为空,表示对该存储 Bucket 内资源执行全量迁移。
	// note:
	// <li> 多条正则表达式之间是"或"的关系,即源文件匹配任何一条正则表达式即视为符合迁移条件。 </li>
	// <li> 正则过滤规则需要遍历源桶中的全部文件,如果源桶中文件数量较多会降低迁移速度。 </li>
	Regex := []string{".png"}

	Source.Regex = Regex

	// 仅当 BucketInventoryDir 不为空时,为必填。
	// 桶清单文件的表头信息,需要传入实际桶清单文件内每列数据对应字段名称,并遵循原字段位置进行填写。您可参考[获取桶清单文件解析位置](https://www.volcengine.com/docs/508/1347855#%E8%8E%B7%E5%8F%96%E6%A1%B6%E6%B8%85%E5%8D%95%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90%E4%BD%8D%E7%BD%AE)获取解析 csv 文件所需的字段信息。
	// <li> Key :【必填】表示待迁移的资源存储 Key。 </li>
	// <li> Size :【推荐】表示待迁移的资源大小。 </li>
	// <li> ETag :【可选】表示待迁移资源的 ETag 值。 </li>
	// note:
	// veImageX 按照该字段顺序对 csv 文件进行解析,获取待迁移文件详细信息。若位置填写错误,可能导致迁移失败。
	// 示例:
	// 1. 若 csv 文件内 Key、Size和 ETag 分别位于整张数据表的第 3 列、第 4 列和第 6 列。那么,此时 BucketInventorySchema取值应为 ["", "", "Key", "Size", "", "ETag"];
	// 2. 若 csv 文件内 Key、Size和 ETag 分别位于整张数据表的第 2 列、第 4 列和第 5 列。那么,此时 BucketInventorySchema取值应为 ["", "Key", "", "Size", "ETag", ""]。
	// warning:
	// csv 文件内数据的位置可能会因为您配置桶清单时选择的清单内容而产生差异,具体请以实际为准。
	BucketInventorySchema := []string{"", "", "Key", "Size", "", "ETag"}

	Source.BucketInventorySchema = BucketInventorySchema

	Task.Source = &Source

	// 转码配置
	Transcode := imagex.CreateImageMigrateTaskBodyTaskTranscode{
		// 目标转码格式,仅针对静图执行转码策略。支持的格式有 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,
		// 当 jpeg 原图在迁移中指定转码为 heic 图时, heic 图是否需要存储原图大小的数据。
		// <li> true:是 </li>
		// <li> false:(默认)否 </li>
		ReserveJPEGSize: false,
	}

	Task.Transcode = &Transcode

	// 目的信息
	Dst := imagex.CreateImageMigrateTaskBodyTaskDst{
		// 迁移目标服务 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,
	}

	Task.Dst = &Dst

	// 迁移策略
	RunStrategy := imagex.CreateImageMigrateTaskBodyTaskRunStrategy{}

	// 源下载 QPS 限制。如取值不为空,则长度必须为 24,表示一天 24 小时内各小时的 QPS 限制值。默认无限制。
	// <li> 取值为负值时,表示无限制 </li>
	// <li> 取值为 0 时,表示对应时间不允许迁移 </li>
	ReadQPS := []int{100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400}

	RunStrategy.ReadQPS = ReadQPS

	// 源下载流量限制。单位为 Byte。如取值不为空,则长度必须为24,表示一天 24 小时内各小时的流量限制值。默认无限制。
	// <li> 取值为负值时,表示无限制 </li>
	// <li> 取值为 0 时,表示对应时间不允许迁移 </li>
	ReadRate := []int{100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400}

	RunStrategy.ReadRate = ReadRate

	Task.RunStrategy = &RunStrategy

	// 回调信息。配置后,当任务执行完成时,将往该回调配置地址发送任务回调信息。
	CallbackCfg := imagex.CreateImageMigrateTaskBodyTaskCallbackCfg{
		// 回调方法。仅支持取值为 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",
	}

	Task.CallbackCfg = &CallbackCfg

	body.Task = &Task

	resp, err := service.CreateImageMigrateTask(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

删除迁移任务

您可以调用 DeleteImageMigrateTask 接口删除迁移任务。详细的参数说明可参见 DeleteImageMigrateTask 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	query := &imagex.DeleteImageMigrateTaskQuery{
		// 任务地区(即任务目标服务的地区),默认空,返回国内任务。
		// <li> cn:国内 </li>
		// <li> mya:亚太东南(柔佛) </li>
		Region: "cn",
		// 仅当任务状态为非Running时生效。
		// 任务 ID,请参考 [GetImageMigrateTasks](https://www.volcengine.com/docs/508/1108670)获取返回的任务 ID。
		TaskID: "648c15f764f3c4abd95ad044",
	}

	resp, err := service.DeleteImageMigrateTask(context.Background(), query)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

更新迁移任务策略

您可以调用 UpdateImageTaskStrategy 接口更新迁移任务策略。详细的参数说明可参见 UpdateImageTaskStrategy 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &imagex.UpdateImageTaskStrategyBody{
		// 任务ID,请参考[CreateImageMigrateTask](https://www.volcengine.com/docs/508/1009929)获取返回的任务 ID。
		TaskID: "648c15f764f3c4abd95ad044",
	}

	// 调整后的迁移策略
	RunStrategy := imagex.UpdateImageTaskStrategyBodyRunStrategy{}

	// 源下载 QPS 限制。如取值不为空,则长度必须为 24,表示一天 24 小时内各小时的 QPS 限制值。默认无限制。
	// <li> 取值为负值时,表示无限制 </li>
	// <li> 取值为 0 时,表示对应时间不允许迁移 </li>
	ReadQPS := []int{100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400}

	RunStrategy.ReadQPS = ReadQPS

	// 源下载流量限制。单位为 Byte。如取值不为空,则长度必须为24,表示一天 24 小时内各小时的流量限制值。默认无限制。
	// <li> 取值为负值时,表示无限制 </li>
	// <li> 取值为 0 时,表示对应时间不允许迁移 </li>
	ReadRate := []int{100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400}

	RunStrategy.ReadRate = ReadRate

	body.RunStrategy = &RunStrategy

	resp, err := service.UpdateImageTaskStrategy(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

重启迁移失败任务

您可以调用 RerunImageMigrateTask 接口重启迁移失败任务。详细的参数说明可参见 RerunImageMigrateTask 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	query := &imagex.RerunImageMigrateTaskQuery{
		// 任务地区(即任务目标服务的地区),默认空,返回国内任务。
		// <li> cn:国内 </li>
		// <li> mya:亚太东南(柔佛) </li>
		Region: "cn",
		// 仅当任务状态为Partial时生效。
		// 任务 ID,请参考 [GetImageMigrateTasks](https://www.volcengine.com/docs/508/1108670)获取返回的任务 ID。
		TaskID: "648c15f764f3c4abd95ad044",
	}

	resp, err := service.RerunImageMigrateTask(context.Background(), query)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

结束迁移任务

您可以调用 TerminateImageMigrateTask 接口结束迁移任务。详细的参数说明可参见 TerminateImageMigrateTask 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	query := &imagex.TerminateImageMigrateTaskQuery{
		// 任务地区(即任务目标服务的地区),默认空,返回国内任务。
		// <li> cn:国内 </li>
		// <li> mya:亚太东南(柔佛) </li>
		Region: "cn",
		// 任务 ID,请参考 [GetImageMigrateTasks](https://www.volcengine.com/docs/508/1108670) 获取返回的任务 ID。
		TaskID: "648c15f764f3c4abd95ad044	",
	}

	resp, err := service.TerminateImageMigrateTask(context.Background(), query)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

导出迁移失败列表

您可以调用 ExportFailedMigrateTask 接口导出迁移失败列表。详细的参数说明可参见 ExportFailedMigrateTask 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	query := &imagex.ExportFailedMigrateTaskQuery{
		// 任务地区(即任务目标服务的地区),默认空,返回国内任务。
		// <li> cn:国内 </li>
		// <li> mya:亚太东南(柔佛) </li>
		Region: "cn",
		// 任务 ID,请参考[CreateImageMigrateTask](https://www.volcengine.com/docs/508/1009929)获取返回的任务 ID。
		TaskID: "648c15f764f3c4abd95ad044",
	}

	resp, err := service.ExportFailedMigrateTask(context.Background(), query)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

获取服务商 Bucket

您可以调用 GetVendorBuckets 接口获取服务商 Bucket。详细的参数说明可参见 GetVendorBuckets 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &imagex.GetVendorBucketsBody{
		// 服务商。取值如下所示:
		// <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",
	}

	resp, err := service.GetVendorBuckets(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

获取迁移任务详情

您可以调用 GetImageMigrateTasks 接口获取迁移任务详情。详细的参数说明可参见 GetImageMigrateTasks 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := imagex.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	query := &imagex.GetImageMigrateTasksQuery{
		// 任务地区(即任务目标服务的地区),缺省时将返回国内列表。取值如下所示:
		// <li> cn:国内 </li>
		// <li> mya:亚太东南(柔佛) </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",
	}

	resp, err := service.GetImageMigrateTasks(context.Background(), query)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

最近更新时间:2025.12.17 14:52:12
这个页面对您有帮助吗?
有用
有用
无用
无用