创建指定前缀迁移任务
Copied!
package main
import (
omsRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/oms/v2/region"
"fmt"
"os"
"log"
coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
oms "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/oms/v2"
omsModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/oms/v2/model"
)
type OmsTaskCreatePrefixDemo struct{}
func NewOmsTaskCreatePrefixDemoDefault() OmsTaskCreatePrefixDemo {
o := OmsTaskCreatePrefixDemo{}
return o
}
func main() {
ak := os.Getenv("HUAWEICLOUD_SDK_AK")
sk := os.Getenv("HUAWEICLOUD_SDK_SK")
credentials := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).Build()
omsClient := *oms.NewOmsClient(oms.OmsClientBuilder().
WithCredential(credentials).
WithRegion(omsRegion.CN_NORTH_4).
Build())
request := omsModel.CreateTaskRequest{}
body := omsModel.CreateTaskReq{}
createTaskReqTaskTypeParam := omsModel.GetCreateTaskReqTaskTypeEnum().PREFIX
body.TaskType = &createTaskReqTaskTypeParam
srcNode := omsModel.SrcNodeReq{}
srcNodeReqBucketParam := "src bucket name"
srcNode.Bucket = &srcNodeReqBucketParam
srcNodeReqRegionParam := "src region"
srcNode.Region = &srcNodeReqRegionParam
srcNodeReqCloudTypeParam := "src cloud type"
srcNode.CloudType = &srcNodeReqCloudTypeParam
srcNodeReqAkParam := "src accessKey"
srcNode.Ak = &srcNodeReqAkParam
srcNodeReqSkParam := "src secretKey"
srcNode.Sk = &srcNodeReqSkParam
objectKeys := make([]string, 0)
objectKeys = append(objectKeys, "prefix")
srcNode.ObjectKey = &objectKeys
body.SrcNode = &srcNode
dstNode := omsModel.DstNodeReq{}
dstNode.Bucket = "dst bucket name"
dstNode.Region = "dst region"
dstNode.Ak = "dst accessKey"
dstNode.Sk = "dst secretKey"
body.DstNode = &dstNode
request.Body = &body
listTasksResponse, err := omsClient.CreateTask(&request)
if err != nil {
fmt.Println(err)
return
}
log.Println(listTasksResponse.String())
}
注意
:
- 示例只传入了必选参数,需要设置其他高级参数可参考API文档。
- 如果待迁移的整桶数据超过3TB或者对象个数超过500万,建议拆分成多个前缀,创建多个任务。
版本说明
本示例基于华为云SDK开发。
功能介绍
华为云提供了对象存储迁移服务端SDK,您可以直接集成服务端SDK来调用对象存储迁移的相关API,从而实现对对象存储迁移服务的快速操作。该示例展示了如何通过Go版SDK创建指定前缀的迁移任务。 任务创建完成后,会通过前缀过滤出所有对象路径匹配该前缀的对象,然后迁移到华为云obs桶中。
前置条件
创建指定前缀迁移任务
package main import ( omsRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/oms/v2/region" "fmt" "os" "log" coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" oms "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/oms/v2" omsModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/oms/v2/model" ) type OmsTaskCreatePrefixDemo struct{} func NewOmsTaskCreatePrefixDemoDefault() OmsTaskCreatePrefixDemo { o := OmsTaskCreatePrefixDemo{} return o } func main() { // 创建OmsClient实例 // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") credentials := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).Build() omsClient := *oms.NewOmsClient(oms.OmsClientBuilder(). WithCredential(credentials). WithRegion(omsRegion.CN_NORTH_4). Build()) // 创建指定前缀的任务 request := omsModel.CreateTaskRequest{} body := omsModel.CreateTaskReq{} // 1、设置任务类型为prefix createTaskReqTaskTypeParam := omsModel.GetCreateTaskReqTaskTypeEnum().PREFIX body.TaskType = &createTaskReqTaskTypeParam // 2、设置源端参数 srcNode := omsModel.SrcNodeReq{} srcNodeReqBucketParam := "src bucket name" srcNode.Bucket = &srcNodeReqBucketParam srcNodeReqRegionParam := "src region" srcNode.Region = &srcNodeReqRegionParam // 可选值有AWS、Azure、Aliyun、Tencent、HuaweiCloud、QingCloud、KingsoftCloud、Baidu、Qiniu或者UCloud。默认值为Aliyun。 srcNodeReqCloudTypeParam := "src cloud type" srcNode.CloudType = &srcNodeReqCloudTypeParam srcNodeReqAkParam := "src accessKey" srcNode.Ak = &srcNodeReqAkParam srcNodeReqSkParam := "src secretKey" srcNode.Sk = &srcNodeReqSkParam objectKeys := make([]string, 0) // 指定要迁移的前缀。整桶迁移prefix设置为""; objectKeys = append(objectKeys, "prefix") srcNode.ObjectKey = &objectKeys body.SrcNode = &srcNode // 3、设置目的端参数 dstNode := omsModel.DstNodeReq{} dstNode.Bucket = "dst bucket name" dstNode.Region = "dst region" dstNode.Ak = "dst accessKey" dstNode.Sk = "dst secretKey" body.DstNode = &dstNode request.Body = &body listTasksResponse, err := omsClient.CreateTask(&request) if err != nil { fmt.Println(err) return } log.Println(listTasksResponse.String()) }
注意
:参考
更多信息请参考OMS对象存储迁移服务
修订记录