开发者社区> 假如2018> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云开发者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())

}
转自:阿里云优惠券

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
工作中用Go: 工具篇
工作中用Go: 工具篇
0 0
go的性能分析:pprof工具
go的性能分析:pprof工具
0 0
[区块链Go]Vscode编写工具与main()函数
[区块链Go]Vscode编写工具与main()函数
0 0
Go 日常开发常备第三方库和工具(下)
重点和大家分享下我们日常开发中所使用到的一些第三方库与工具。 这里我主要将这些库分为两类: 业务开发 基础工具开发
0 0
Go 日常开发常备第三方库和工具(中)
重点和大家分享下我们日常开发中所使用到的一些第三方库与工具。 这里我主要将这些库分为两类: 业务开发 基础工具开发
0 0
Go 日常开发常备第三方库和工具(上)
重点和大家分享下我们日常开发中所使用到的一些第三方库与工具。 这里我主要将这些库分为两类: 业务开发 基础工具开发
0 0
Golang语言(打卡✏️第四天)fmt格式化工具|Go主题月
Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。
0 0
读 Go 源码,可以试试这个工具
读 Go 源码,可以试试这个工具
0 0
Gox : 简单实在的Go平台交叉编译工具
Gox 是一个简单的,不花俏的Go平台交叉编译工具,它的用处就和标准的 go build 一样。Gox 会并行地为多种平台编译。Gox 同时也提供了一套交叉编译工具链。
0 0
带你读《GO语言公链开发实战》之二:交互工具
本书的目标是引导读者全面了解区块链技术实现原理,笔者也一直坚信,了解某一系统最直接的方式就是研读它的源码,所以本书并不是只介绍区块链技术,而是深入分析其背后的实现原理。通过阅读本书,读者可以全面地了解一条公链的技术实现。本书基于比原链的源代码进行分析,比原链是一个开源的有智能合约功能的公共区块链平台,是国内优秀的公链,目前比原链的代码量不多,而且源码结构清晰,特别适合初学者学习。
95 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Go 构建日请求千亿级微服务的最佳实践
立即下载
Go语言路上踩过的坑
立即下载
gohbase :HBase go客户端
立即下载