全部產品
Search
文件中心

Data Online Migration:代理

更新時間:Dec 11, 2025

本文介紹如何使用SDK調用代理相關的方法。

建立代理

說明

使用代理前務必先部署代理程式,SDK無法自動部署代理,請參考文檔部署代理程式 按照文檔提示操作。僅當使用專線或者VPN的情況下才需要建立代理,公網情境一般無須建立代理。

以下範例程式碼用於建立代理。

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() {
    // 填寫通道ID。
    tunnelId := "ab31d1f9-****-4f62-****-914e4b2f78c7"
    // 這裡以北京地區為例。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // 填寫代理名稱。
    agentName := "exampleagent"
    // 使用網路,公網請填寫public, 專線或者VPN請填寫vpc。
    agentEndpoint := "public"
    // 部署方式,目前僅支援填寫default。
    deployMethod := "default"
    // 支援 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
    }
    info := mgwpackage.CreateAgentInfo{
        AgentEndpoint: &agentEndpoint,
        DeployMethod:  &deployMethod,
        Name:          &agentName,
        TunnelId:      &tunnelId,
    }
    _, err = client.CreateAgent(&userId, &mgwpackage.CreateAgentRequest{ImportAgent: &info})
    if err != nil {
        log.Printf("create agent 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"
    // 填寫代理名稱。
    agentName := "exampleagent"
    // 支援 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
    }
    resp, err := client.GetAgentStatus(&userId, &agentName)
    if err != nil {
        log.Printf("get client status failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    // 如果status欄位顯示的是OK,說明代理程式狀態正常,其它任何值都表示代理異常。
    fmt.Println(string(jsonBytes))
}

正常返回樣本

{
  "ImportAgentStatus": {
    "Status": "OK",
    "AgentIP": "192.168.0.2",
    "AgentVersion": "1.6.0",
  }
}

擷取代理詳情

以下範例程式碼用於擷取指定代理詳情資訊。

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"
    // 填寫代理名稱。
    agentName := "exampleagent"
     // 支援 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
    }
    resp, err := client.GetAgent(&userId, &agentName)
    if err != nil {
        log.Printf("get agent failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    fmt.Println(string(jsonBytes))
}

正常返回樣本

{
  "ImportAgent": {
    "Owner": "test_owner",
    "Name": "test_name",
    "CreateTime": "2024-05-01T12:00:00.000Z",
    "ModifyTime": "2024-05-01T12:00:00.000Z",
    "DeployMethod": "default",
    "AgentEndpoint": "vpc",
    "ActivationKey": "6af62558-970d-4f44-8663-4e297170fd6a",
    "Tags": "K1:V1,K2:V2",
    "Version": "test_agent_id",
    "TunnelId": "test_tunnel_id"
  }
}

列舉代理

以下範例程式碼用於列舉帳號下所有代理資訊。

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.ListAgent(&userId, &mgwpackage.ListAgentRequest{
        Count: &count, Marker: &marker,
    })
    if err != nil {
        log.Printf("list agent failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    fmt.Println(string(jsonBytes))
}

正常返回樣本

{
  "ImportAgentList": {
    "Truncated": true,
    "NextMarker": "test_next_marker",
    "ImportAgent": [
      {
        "Owner": "test_owner",
        "Name": "test_name",
        "CreateTime": "2024-05-01T12:00:00.000Z",
        "ModifyTime": "2024-05-01T12:00:00.000Z",
        "DeployMethod": "default",
        "AgentEndpoint": "vpc",
        "ActivationKey": "6af62558-970d-4f44-8663-4e297170fd6a",
        "Tags": "K1:V1,K2:V2",
        "Version": "test_agent_id",
        "TunnelId": "test_tunnel_id"
      }
    ]
  }
}

刪除代理

以下範例程式碼用於刪除指定代理。

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"
    // 填寫代理名稱。
    agentName := "exampleagent"
    // 支援 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
    }
    _, err = client.DeleteAgent(&userId, &agentName)
    if err != nil {
        log.Printf("delete agent failed: %v", err)
        return
    }
}

後續步驟

代理建立後,您可以選擇繼續建立資料地址,詳情請參見資料地址