全部產品
Search
文件中心

Alibaba Cloud SDK:整合SDK

更新時間:May 17, 2025

在調用OpenAPI時,建議採用在專案中整合SDK的方式。使用SDK可以簡化開發流程,實現功能的快速整合,同時有效降低維護成本。本文將詳細介紹如何在專案中安裝SDK以及使用SDK開發。

重要

V1.0 Go SDK已停止支援,詳情請參考宣布將於 2025 年 3 月 1 日終止對阿里雲 V1.0 Golang SDK 支援,請使用V2.0 Go SDK

環境要求

Go 環境版本>= 1.10.x

安裝SDK

由於在安裝雲產品V1.0 Go SDK時會自動安裝核心SDK,所以在實際應用過程中僅需要安裝雲產品SDK即可。

雲產品SDK

雲產品SDK主要包含了調用OpenAPI所需的請求參數Request對象及返回結果Response對象。以雲產品ECS的SDK為例,您可以在Terminal或者命令列中執行以下安裝命令:

go get github.com/aliyun/alibaba-cloud-sdk-go/services/ecs

V1.0 SDK的命名方式為github.com/aliyun/alibaba-cloud-sdk-go/services/${產品code}

核心SDK

核心SDK主要包含在調用OpenAPI時所需的Client對象、簽名邏輯以及異常處理等功能。當您使用泛化調用時,僅需執行以下安裝命令:

go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk

使用SDK

本文將以調用ECSDescribeInstances介面為例,為您分步介紹如何使用V1.0 SDK。

1. 初始化請求用戶端

所有的OpenAPI均通過sdk包提供的Client發起調用,因此在調用OpenAPI之前,需要先進行用戶端初始化。這裡以使用AK初始化方式為例,更多用戶端初始化方式請參見管理訪問憑據

說明

樣本採用讀取環境變數的方式擷取憑證,運行代碼前需配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數

import (
	"os"

	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
	config := sdk.NewConfig()
	credential, err := credentials.NewStaticAKCredentialsProviderBuilder().
		WithAccessKeyId(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")).
		WithAccessKeySecret(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).
		Build()
	if err != nil {
		panic(err)
	}
	// 初始化雲產品用戶端
	ecsClient, err := ecs.NewClientWithOptions("cn-hangzhou", config, credential)
	if err != nil {
		panic(err)
	}
}

2. 構造OpenAPI請求參數對象

可以使用雲產品SDK中提供的請求參數對象封裝請求參數。

說明

OpenAPI請求參數對象的命名方式為:<OpenAPI名稱>Request

// 樣本參數中有使用requests包,需要在import中添加:"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"

// 建立Request對象
request := ecs.CreateDescribeInstancesRequest()
request.InstanceIds = "[\"i-bp1dXXXXXXXXXXXX\"]"
request.PageSize = requests.Integer("100")
request.PageNumber = requests.Integer("1")

3. 發起請求

通過步驟1建立的請求用戶端調用OpenAPI介面發起請求,該介面的參數為步驟2構造的Request對象。

response, err := ecsClient.DescribeInstances(request)
if err != nil {
	panic(err)
}
fmt.Print(response.GetHttpContentString())

完整範例程式碼

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
	config := sdk.NewConfig()
	credential, err := credentials.NewStaticAKCredentialsProviderBuilder().
		WithAccessKeyId(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")).
		WithAccessKeySecret(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).
		Build()
	if err != nil {
		panic(err)
	}

	ecsClient, err := ecs.NewClientWithOptions("cn-hangzhou", config, credential)
	if err != nil {
		panic(err)
	}

	// 建立Request對象
	request := ecs.CreateDescribeInstancesRequest()
	request.InstanceIds = "[\"i-bp1dXXXXXXXXXXXX\"]"
	request.PageSize = requests.Integer("100")
	request.PageNumber = requests.Integer("1")

	response, err := ecsClient.DescribeInstances(request)
	if err != nil {
		panic(err)
	}
	fmt.Print(response.GetHttpContentString())
}

相關文檔