すべてのプロダクト
Search
ドキュメントセンター

Data Online Migration:トンネルの管理

最終更新日:May 10, 2025

このトピックでは、Go 用 Data Online Migration SDK を使用してトンネルを管理する方法について説明します。

トンネルの作成

説明

トンネルは、Express Connect 回線または VPN ゲートウェイ経由でデータを移行する場合にのみ必要です。インターネット経由でデータを移行する場合は、トンネルを作成する必要はありません。

トンネルを作成する方法のサンプルコードを次に示します。

package main

import (
    "fmt"
    "log"
    "os"

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

// AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。保存した場合、AccessKey ペアが漏洩し、アカウント内のリソースのセキュリティが侵害される可能性があります。
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

// Alibaba Cloud アカウントの 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
    }
    // maxBandwidth パラメーターと maxQps パラメーターのデフォルト値は 0 です。これは、トンネルの帯域幅とクエリ/秒 (QPS) が制限されていないことを示します。maxBandWidth の単位:bit/s。ビジネス要件に基づいてパラメーターを指定します。
    maxBandwidth := int64(1073741824)
    maxQps := int32(1000)
    request := &mgwpackage.CreateTunnelRequest{
        ImportTunnel: &mgwpackage.CreateTunnelInfo{
            TunnelQos: &mgwpackage.TunnelQos{
                MaxBandwidth: &maxBandwidth,
                MaxQps:       &maxQps,
            },
        },
    }
    resp, err := client.CreateTunnel(&userId, request)
    if err != nil {
        log.Printf("create tunnel failed: %v", err)
        return
    }
    fmt.Println("Tunnel ID:" + *resp.Headers["x-oss-import-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 シークレットをプロジェクトコードに保存しないことをお勧めします。保存した場合、AccessKey ペアが漏洩し、アカウント内のリソースのセキュリティが侵害される可能性があります。
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

// Alibaba Cloud アカウントの ID を指定します。
var userId = "11470***876***55"

func main() {
    // トンネル ID を指定します。
    tunnelId := "ab31d1f9-****-4f62-****-914e4b2f78c7"
    // エンドポイントを指定します。この例では、中国 (北京) リージョンのエンドポイントが使用されています。
    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
    }
    resp, err := client.GetTunnel(&userId, &tunnelId)
    if err != nil {
        log.Printf("get tunnel failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    fmt.Println(string(jsonBytes))
}

正常な応答の例

{
  "ImportTunnel": {
    "Owner": "test_owner",
    "TunnelId": "test_tunnel_id",
    "CreateTime": "2024-05-01T12:00:00.000Z",
    "ModifyTime": "2024-05-01T12:00:00.000Z",
    "Tags": "K1:V1,K2:V2",
    "TunnelQos": {
      "MaxQps": 100,
      "MaxBandwidth": 1073741824
    }
  }
}

トンネルの一覧表示

Alibaba Cloud アカウント内のすべてのトンネルを一覧表示する方法のサンプルコードを次に示します。

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 シークレットをプロジェクトコードに保存しないことをお勧めします。保存した場合、AccessKey ペアが漏洩し、アカウント内のリソースのセキュリティが侵害される可能性があります。
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

// Alibaba Cloud アカウントの 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.ListTunnel(&userId, &mgwpackage.ListTunnelRequest{Count: &count, Marker: &marker})
    if err != nil {
        log.Printf("list tunnel failed: %v", err)
        return
    }
    jsonBytes, err := json.Marshal(resp)
    if err != nil {
        log.Printf("covert failed: %v", err)
        return
    }
    fmt.Println(string(jsonBytes))
}

正常な応答の例

{
  "ImportTunnelList": {
    "Truncated": true,
    "NextMarker": "test_marker",
    "ImportTunnel": [
      {
        "Owner": "test_owner",
        "TunnelId": "test_tunnel_id",
        "CreateTime": "2024-05-01T12:00:00.000Z",
        "ModifyTime": "2024-05-01T12:00:00.000Z",
        "Tags": "K1:V1,K2:V2",
        "TunnelQos": {
          "MaxQps": 100,
          "MaxBandwidth": 1073741824
        }
      }
    ]
  }
}

トンネルの更新

トンネルを更新する方法 (トンネルのサービス品質 (QoS) の更新など) のサンプルコードを次に示します。

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 シークレットをプロジェクトコードに保存しないことをお勧めします。保存した場合、AccessKey ペアが漏洩し、アカウント内のリソースのセキュリティが侵害される可能性があります。
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

// Alibaba Cloud アカウントの ID を指定します。
var userId = "11470***876***55"

func main() {
    // トンネル ID を指定します。
    tunnelId := "ab31d1f9-****-4f62-****-914e4b2f78c7"
    // エンドポイントを指定します。この例では、中国 (北京) リージョンのエンドポイントが使用されています。
    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
    }
    // MaxBandwidth パラメーターと MaxQps パラメーターのデフォルト値は 0 です。これは、トンネルの帯域幅と QPS が制限されていないことを示します。MaxBandWidth の単位:bit/s。ビジネス要件に基づいてパラメーターを指定します。
    maxBandwidth := int64(1147483648)
    maxQps := int32(1000)
    _, err = client.UpdateTunnel(&userId, &tunnelId,
        &mgwpackage.UpdateTunnelRequest{
            ImportTunnel: &mgwpackage.UpdateTunnelInfo{
                TunnelQos: &mgwpackage.TunnelQos{
                    MaxBandwidth: &maxBandwidth,
                    MaxQps:       &maxQps,
                },
            }})
    if err != nil {
        log.Printf("update tunnel 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 シークレットをプロジェクトコードに保存しないことをお勧めします。保存した場合、AccessKey ペアが漏洩し、アカウント内のリソースのセキュリティが侵害される可能性があります。
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

// Alibaba Cloud アカウントの ID を指定します。
var userId = "11470***876***55"

func main() {
    // トンネル ID を指定します。
    tunnelId := "ab31d1f9-****-4f62-****-914e4b2f78c7"
    // エンドポイントを指定します。この例では、中国 (北京) リージョンのエンドポイントが使用されています。
    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
    }
    _, err = client.DeleteTunnel(&userId, &tunnelId)
    if err != nil {
        log.Printf("delete tunnel failed: %v", err)
        return
    }
}

次の手順

トンネルを作成したら、エージェントを作成できます。詳細については、「エージェントの管理」をご参照ください。