阿里雲開發者Go工具套件

歡迎使用阿里雲開發者工具套件(SDK)。阿里雲Go SDK讓您不用複雜編程即可訪問雲服務器、雲監控等多個阿里雲服務。這裏向您介紹如何獲取阿里雲Go SDK並開始調用。如果您在使用SDK的過程中遇到任何問題,歡迎前往阿里雲SDK問答社區提問,提問前請閱讀提問引導。亦可在當前GitHub提交Issues。
環境準備
要使用阿里雲Go SDK,您需要一個雲賬號以及一對Access Key ID和Access Key Secret。 請在阿里雲控制檯中的AccessKey管理頁面上創建和查看您的Access Key,或者聯繫您的系統管理員
要使用阿里雲SDK訪問某個產品的API,您需要事先在阿里雲控制檯中開通這個產品。
SDK獲取和安裝
使用go get下載安裝SDK

go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk
如果您使用了glide管理依賴,您也可以使用glide來安裝阿里雲GO SDK

glide get github.com/aliyun/alibaba-cloud-sdk-go
另外,阿里雲Go SDK也會發布在 https://develop.aliyun.com/tools/sdk#/go 這個地址。

開始調用
以下這個代碼示例向您展示了調用阿里雲GO SDK的3個主要步驟:

創建Client實例
創建API請求並設置參數
發起請求並處理異常
package main

import (

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

)

func main() {

// 創建ecsClient實例
ecsClient, err := ecs.NewClientWithAccessKey(
    "<your-region-id>",             // 您的可用區ID
    "<your-access-key-id>",         // 您的Access Key ID
    "<your-access-key-secret>")        // 您的Access Key Secret
if err != nil {
    // 異常處理
    panic(err)
}
// 創建API請求並設置參數
request := ecs.CreateDescribeInstancesRequest()
request.PageSize = "10"
// 發起請求並處理異常
response, err := ecsClient.DescribeInstances(request)
if err != nil {
    // 異常處理
    panic(err)
}
fmt.Println(response)

}
在創建Client實例時,您需要填寫3個參數:Region ID、Access Key ID和Access Key Secret。Access Key ID和Access Key Secret可以從控制檯獲得;而Region ID可以從地域列表中獲得

Keepalive
阿里雲Go SDK底層使用Go語言原生的net/http收發請求,因此配置方式與net/http相同,您可以通過config直接將配置傳遞給底層的httpClient

httpTransport := http.Transport{

// set http client options

}
config := sdk.NewConfig()

        .WithHttpTransport(httpTransport)
        .WithTimeout(timeout)

ecsClient, err := ecs.NewClientWithOptions(config)
併發請求
因Go語言的併發特性,我們建議您在應用層面控制SDK的併發請求。
爲了方便您的使用,我們也提供了可直接使用的併發調用方式,相關的併發控制由SDK內部實現。
開啓SDK Client的併發功能
// 最大併發數
poolSize := 2
// 可緩存的最大請求數
maxTaskQueueSize := 5

// 在創建時開啓異步功能
config := sdk.NewConfig()

        .WithEnableAsync(true)
        .WithGoRoutinePoolSize(poolSize)            // 可選,默認5
        .WithMaxTaskQueueSize(maxTaskQueueSize)     // 可選,默認1000

ecsClient, err := ecs.NewClientWithOptions(config)

// 也可以在client初始化後再開啓
client.EnableAsync(poolSize, maxTaskQueueSize)
發起異步調用
阿里雲Go SDK支持兩種方式的異步調用:

使用channel作爲返回值
responseChannel, errChannel := client.FooWithChan(request)

// this will block
response := <-responseChannel
err = <-errChannel
使用callback控制回調
blocker := client.FooWithCallback(request, func(response *FooResponse, err error) {

    // handle the response and err
})

// blocker 爲(chan int),用於控制同步,返回1爲成功,0爲失敗
// 在<-blocker返回失敗時,err依然會被傳入的callback處理
result := <-blocker
泛化調用接口(CommonApi)
什麼是CommonAPI
CommonAPI是阿里雲SDK推出的,泛用型的API調用方式。CommonAPI具有以下幾個特點:

輕量:只需Core包即可發起調用,無需下載安裝各產品線SDK。
簡便:無需更新SDK即可調用最新發布的API。
快速迭代
開始使用
CommonAPI,需要配合相應的API文檔使用,以查詢API的相關信息。

您可以在 文檔中心 查詢到所有產品的API文檔。

發起一次CommonAPI請求,需要您查詢到以下幾個參數:

域名(domain):即該產品的通用訪問域名,一版可以在”調用方式”頁查看到
API版本(version):即該API的版本號,以’YYYY-MM-DD’的形式表現,一般可以在”公共參數”頁面查到
接口名稱(apiName):即該API的名稱
我們以Ecs產品的DescribeInstanceStatus API爲例

package main

import (

"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"fmt"

)

func main() {

client, err := sdk.NewClientWithAccessKey("cn-hangzhou", "{your_access_key_id}", "{your_access_key_id}")
if err != nil {
    panic(err)
}

request := requests.NewCommonRequest()
request.Domain = "ecs.aliyuncs.com"
request.Version = "2014-05-26"
request.ApiName = "DescribeInstanceStatus"

request.QueryParams["PageNumber"] = "1"
request.QueryParams["PageSize"] = "30"

response, err := client.ProcessCommonRequest(request)
if err != nil {
    panic(err)
}

fmt.Print(response.GetHttpContentString())

}
轉自:阿里雲優惠券

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章