集成SDK
在调用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_ID
和ALIBABA_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())
相关文档
关于SDK的高阶配置,例如代理配置、超时配置等,请参见进阶配置。
如何创建AK,请参见创建AccessKey。