全部產品
Search
文件中心

Data Online Migration:資料地址

更新時間:Dec 11, 2025

本文介紹如何使用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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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
    }
}

以下範例程式碼用於建立通用清單 Inventory 類型的資料地址。

重要

建立 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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    addressType := "inv"
    // 當 addressType 為 inv時,dataType可選值為oss、s3、cos、obs、tos、qiniu、gcp、azure、ks3、bos、us3、uss。
    dataType := "oss"
    // 以下參數為待遷移資料相關資訊,請根據實際值填寫。
    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,
        DataType:    &dataType,
        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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    client, err := mgwpackage.NewClient(&config)
    if err != nil {
        log.Printf("create client failed: %v", err)
        return
    }
    // 以下參數為待遷移資料相關資訊,請根據實際值填寫。
    addressType := "uss"
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    address := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    addressName := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    addressName := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    addressName := "exampleaddress"
    // 填寫代理名稱列表,以,分隔, 不可為空白。
    agentList := "exampleagent1,exampleagent2,exampleagent3..."
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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"
    // 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
    protocol := "http"
    // 填寫資料位址名稱。
    addressName := "exampleaddress"
    config := openapipackage.Config{
        AccessKeyId:     &accessKeyId,
        AccessKeySecret: &accessKeySecret,
        Endpoint:        &endpoint,
        Protocol:        &protocol,
    }
    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
    }
}

後續步驟

資料地址建立後,您可以選擇繼續執行建立任務操作,詳情請參見 任務