本文介紹如何使用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
}
}
後續步驟
代理建立後,您可以選擇繼續建立資料地址,詳情請參見資料地址 。