阿里云开发者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())
}
转自:阿里云优惠券

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker部署Elasticsearch的坑
Elasticsearch需要大量的机器,单机版上点数据就挂了,集群版本最少也是3台机器。 在Docker上可以轻松的模拟出多台机器的场景,还能在云主机上实现。阿里云的Elasticsearch 最少也是一年5k的价格。所以自己在Docker上搭建实在是经济高效,适合业务刚刚起步的我们。 看起来很美好,这次升级最大的坑就是: Unable to lock JVM Memory: error=12, reason=Cannot allocate memory 折腾了一天,最后还是在github上找到了答案,直接粘贴上来。原文网址 If you look at your Docker daemon's limits, you will probably see this: grep locked /proc/$(ps --no-headers -o pid -C dockerd | tr -d ' ')/limits Max locked memory 65536 65536 bytes When we would much prefer to see: grep locked /proc...
- 下一篇
使用PHP结合Ffmpeg快速搭建流媒体服务实践
一、背景 笔者想将自己收藏的一些电影放到网站上可以用来随时播放,不过遇到了一个问题,便是如果直接将MP4文件放放到网站目录当中,手机端必须下载整个视频才可以播放,而如果跨外网传输,这实在是不太现实。 为了解决这个问题,便想着搭建一套流媒体服务,这样手机就可以边看边下载,查询了一些资料了了解到需要先将视频分成一小片来传输,比如将MP4转码为M3U8格式,查询了相关转码方法,比较主流的方式是使用ffmpeg这个开源工具 二、操作概要 1. 安装Ffmpeg 2. 服务搭建 3. 功能测试 三、搭建ffmpeg 视频转码的工具可能有很多,但开源且使用人数最多的还是莫过于ffmpeg这个工具,具体功能笔者不在这里详细讲解;安装此工具的方式有很多,比如apt安装、源码安装、docker安装等等,不过docker是跨平台的,因此笔者这里将以docker方式安装为例 3.1 镜像下载 首先笔者需要下载对应的docker镜像,参考命令如下 docker pull jrottenberg/ffmpeg 命令执行过程中将会从远处下载镜像,这个时间由当前的网络带宽所决定,当下载完成之后,可以看到如下参考信息...
相关文章
文章评论
共有0条评论来说两句吧...