数据地址

更新时间:

本文介绍如何使用SDK调用数据地址相关的方法。

创建数据地址

以下示例代码用于创建OSS类型的数据地址。

重要
  • 创建OSS类型的数据地址前需要先进行角色配置,并获取到角色(rolename)。

  • 是否需要关联代理需要根据具体情况而定,请参见文档 使用代理迁移-概述。创建其它类型数据地址关联代理的方法与该示例相同。

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    addressType := "oss"
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    regionId := "oss-cn-beijing"
    bucket := "examplebucket"
    prefix := "***/"
    roleName := "rolename_xxxxx"
    // 代理列表,无需关联代理则不用指定。
    agentList := "agent1,agent2,agent3"
    detail := mgwpackage.AddressDetail{
        AddressType: &addressType,
        RegionId:    &regionId,
        Bucket:      &bucket,
        Prefix:      &prefix,
        Role:        &roleName,
        AgentList:   &agentList,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

以下示例代码用于创建Oss Inventory类型的数据地址。

重要

创建Oss Inventory类型的数据地址前需要先进行角色配置,并获取到角色和清单角色 (rolename 和 invrolename)。

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    addressType := "ossinv"
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    prefix := "***/"
    regionId := "oss-cn-beijing"
    bucket := "examplebucket"
    roleName := "rolename_xxxxx"
    // 以下参数为清单相关信息。
    invLocation := "oss"
    invBucket := "exampleinvbucket"
    invRegionId := "oss-cn-beijing"
    invRole := "invrolename_*******"
    invPath := "dir/manifest.json"
    detail := mgwpackage.AddressDetail{
        AddressType: &addressType,
        RegionId:    &regionId,
        Bucket:      &bucket,
        Prefix:      &prefix,
        Role:        &roleName,
        InvLocation: &invLocation,
        InvBucket:   &invBucket,
        InvRegionId: &invRegionId,
        InvRole:     &invRole,
        InvPath:     &invPath,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

以下示例代码用于创建第三方源类型的数据地址。

s3

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "s3"
    accessId := "***"
    accessSecret := "******"
    domain := "s3.ap-southeast-1.amazonaws.com"
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

cos

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
     // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "cos"
    accessId := "***"
    accessSecret := "******"
    domain := "cos.ap-nanjing.myqcloud.com"
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

obs

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "obs"
    accessId := "***"
    accessSecret := "******"
    domain := "obs.cn-north-1.myhuaweicloud.com"
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

tos

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "tos"
    accessId := "***"
    accessSecret := "******"
    domain := "tos-s3-cn-beijing.volces.com"
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

qiniu

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "qiniu"
    accessId := "***"
    accessSecret := "******"
    // 域名说明请参见https://developer.qiniu.com/kodo/8527/kodo-domain-name-management
    domain := "http://xxxx.com" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

gcp

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "gcp"
    accessId := "***"
    accessSecret := "******"
    // domain请跟根据实际值填写。
    domain := "Cloud Storage URI" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

azure

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "azure"
    accessSecret := "******"
    domain := "https://<存储账号>.blob.core.windows.net" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

ks3

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "ks3"
    accessId := "***"
    accessSecret := "******"
    domain := "ks3-cn-beijing.ksyuncs.com" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

bos

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "bos"
    accessId := "***"
    accessSecret := "******"
    domain := "bj.bcebos.com" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

ucloud s3

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "us3"
    accessId := "***"
    accessSecret := "******"
    domain := "cn-bj.ufileos.com" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

youpai

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "youpai"
    accessId := "***"
    accessSecret := "******"
    domain := "s3.api.upyun.com" 
    bucket := "examplebucket"
    prefix := "***/"
    detail := mgwpackage.AddressDetail{
        AddressType:  &addressType,
        AccessId:     &accessId,
        AccessSecret: &accessSecret,
        Domain:       &domain,
        Bucket:       &bucket,
        Prefix:       &prefix,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

以下示例代码用于创建HTTP类型的数据地址。

重要

创建HTTP类型的数据地址前需要先进行角色配置,并获取到清单角色(invrolename)。

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "http"
    invDomain := "oss-cn-beijing.aliyuncs.com"
    invBucket := "exampleinvbucket"
    invLocation := "oss"
    invPath := "dir/manifest.json"
    invRole := "invrolename_*******"
    detail := mgwpackage.AddressDetail{
        AddressType: &addressType,
        InvDomain:   &invDomain,
        InvLocation: &invLocation,
        InvPath:     &invPath,
        InvRole:     &invRole,
        InvBucket:   &invBucket,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

以下示例代码用于创建LocalFS类型的数据地址,LocalFS类型数据地址必须关联代理。

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下参数为待迁移数据相关信息,请根据实际值填写。
    addressType := "local"
    prefix := "/***/"
    // 代理列表。
    agentList := "agent1,agent2,agent3"
    detail := mgwpackage.AddressDetail{
        AddressType: &addressType,
        Prefix:      &prefix,
        AgentList:   &agentList,
    }
    _, err = client.CreateAddress(&userId, &mgwpackage.CreateAddressRequest{
        ImportAddress: &mgwpackage.CreateAddressInfo{
            Name:          &address,
            AddressDetail: &detail,
        }})
    if err != nil {
        log.Printf("create address failed: %v", err)
        return
    }
}

获取数据地址详情

以下示例代码用于获取数据地址的详细信息。

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    addressName := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    resp, err := client.GetAddress(&userId, &addressName)
    if err != nil {
        log.Printf("get address failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    fmt.Println(string(jsonBytes))
}

正常返回示例

{
  "ImportAddress": {
    "Owner": "test_owner",
    "Name": "test_name",
    "AddressDetail": {
      "AddressType": "ossinv",
      "Bucket": "test_bucket",
      "Domain": "test_domain",
      "Prefix": "test_prefix",
      "AccessId": "test_access_id",
      "AccessSecret": "test_secret_key",
      "Role": "test_role",
      "InvDomain": "test_inv_domain",
      "InvBucket": "test_inv_bucket",
      "InvAccessId": "test_inv_access_id",
      "InvAccessSecret": "test_inv_secret_key",
      "InvPath": "manifest.json",
      "InvRole": "test_inv_role",
      "InvLocation": "oss",
      "AgentList": "agent1,agent2",
      "RegionId": "test_region_id",
      "InvRegionId": "test_inv_region_id"
    },
    "CreateTime": "2024-05-01T12:00:00.000Z",
    "ModifyTime": "2024-05-01T12:00:00.000Z",
    "VerifyTime": "2024-05-01T12:00:00.000Z",
    "Version": "test_id",
    "Tags": "K1:V1,K2:V2",
    "Status": "avaliable",
    "VerifyResult": {
      "HttpCode": "400",
      "ErrorCode": "InvalidArgument",
      "ErrorMsg": "Invalid argument."
    }
  }
}

校验数据地址

以下示例代码用于验证指定的数据地址是否可用。

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    addressName := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    resp, err := client.VerifyAddress(&userId, &addressName)
    if err != nil {
        log.Printf("verify address failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    // 仅当status 字段值为 available 时表示数据地址有效,其它任何值均表示无效。
    fmt.Println(string(jsonBytes))
}

正常返回地址可用示例

{
  "VerifyAddressResponse": {
    "Status": "available",
    "VerifyTime": "2024-05-01T12:00:00.000Z",
    "ErrorCode": "",
    "ErrorMessage": ""
  }
}

正常返回地址不可用示例

{
  "VerifyAddressResponse": {
    "Status": "unavailable",
    "VerifyTime": "2024-05-01T12:00:00.000Z",
    "ErrorCode": "400",
    "ErrorMessage": "Invalid argument."
  }
}

列举数据地址

以下示例代码用于列举账号下所有数据地址信息。

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 根据实际填写marker,count。
    count := int32(1)
    marker := ""
    resp, err := client.ListAddress(&userId, &mgwpackage.ListAddressRequest{
        Count: &count, Marker: &marker,
    })
    if err != nil {
        log.Printf("list address failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    // 仅当status 字段值为 available 时表示数据地址有效,其它任何值均表示无效。
    fmt.Println(string(jsonBytes))
}

正常返回示例

{
  "ImportAddressList": {
    "Truncated": true,
    "NextMarker": "test_marker",
    "ImportAddress": [
      {
        "Owner": "test_owner",
        "Name": "test_name",
        "AddressDetail": {
          "AddressType": "ossinv",
          "Bucket": "test_bucket",
          "Domain": "test_domain",
          "Prefix": "test_prefix",
          "AccessId": "test_access_id",
          "AccessSecret": "test_secret_key",
          "Role": "test_role",
          "InvDomain": "test_inv_domain",
          "InvBucket": "test_inv_bucket",
          "InvAccessId": "test_inv_access_id",
          "InvAccessSecret": "test_inv_secret_key",
          "InvPath": "manifest.json",
          "InvRole": "test_inv_role",
          "InvLocation": "oss",
          "AgentList": "agent1,agent2",
          "RegionId": "test_region_id",
          "InvRegionId": "test_inv_region_id"
        },
        "CreateTime": "2024-05-01T12:00:00.000Z",
        "ModifyTime": "2024-05-01T12:00:00.000Z",
        "VerifyTime": "2024-05-01T12:00:00.000Z",
        "Version": "test_id",
        "Tags": "K1:V1,K2:V2",
        "Status": "avaliable",
        "VerifyResult": {
          "HttpCode": "400",
          "ErrorCode": "InvalidArgument",
          "ErrorMsg": "Invalid argument."
        }
      }
    ]
  }
}

更新数据地址

以下示例代码用于代理需要扩容或缩容的场景,更新指定数据地址关联的代理。

重要

至少需要填写一个代理名称,并且代理的通道不允许更改,否则更新失败。

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    addressName := "exampleaddress"
    // 填写代理名称列表,以,分隔, 不可为空。
    agentList := "exampleagent1,exampleagent2,exampleagent3..."
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    _, err = client.UpdateAddress(&userId, &addressName, &mgwpackage.UpdateAddressRequest{
        ImportAddress: &mgwpackage.UpdateAddressInfo{
            AgentList: &agentList,
        },
    })
    if err != nil {
        log.Printf("update address failed: %v", err)
        return
    }
}

删除数据地址

以下示例代码用于删除指定数据地址。

package main

import (
    "log"
    "os"

    openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)

/** 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** 填写主账号ID。*/
var userId = "11470***876***55"

func main() {
    // 这里以北京区域为例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填写数据地址名称。
    addressName := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    _, err = client.DeleteAddress(&userId, &addressName)
    if err != nil {
        log.Printf("delete address failed: %v", err)
        return
    }
}

后续步骤

数据地址创建后,您可以选择继续执行创建任务操作,详情请参见 任务