简介
欢迎使用腾讯云开发者工具套件(SDK)3.0,SDK3.0 是云 API3.0 平台的配套工具。后续所有的云服务产品都会接入进来。新版 SDK实 现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,统一的错误码和返回包格式这些优点。
为方便 GO 开发者调试和接入腾讯云产品 API,这里向您介绍适用于 GO 的腾讯云开发工具包,并提供首次使用开发工具包的简单示例。让您快速获取腾讯云 GO SDK 并开始调用。
依赖环境
- Go 1.9 版本及以上,并设置好 GOPATH 等必须的环境变量。
- 使用相关产品前需要在腾讯云控制台已开通相应产品。
- 在腾讯云控制台访问管理页面获取 SecretID 和 SecretKey 。
获取安装
安装 Go SDK 前,先获取安全凭证。在第一次使用云 API 之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID 和 SecretKey, SecretID 是用于标识 API 调用者的身份,SecretKey 是用于加密签名字符串和服务器端验证签名字符串的密钥。SecretKey 必须严格保管,避免泄露。
通过go get安装(推荐)
推荐使用语言自带的工具安装 SDK :
go get -u github.com/tencentcloud/tencentcloud-sdk-go
通过源码安装
前往 Github 代码托管地址 下载最新代码,解压后安装到 $GOPATH/src/github.com/tencentcloud 目录下。
示例
每个接口都有一个对应的 Request 结构和一个 Response 结构。例如云服务器的查询实例列表接口 DescribeInstances 有对应的请求结构体 DescribeInstancesRequest 和返回结构体 DescribeInstancesResponse 。
下面以云服务器查询实例列表接口为例,介绍 SDK 的基础用法。出于演示的目的,有一些非必要的内容也加上去了,以尽量展示 SDK 常用的功能,但也显得臃肿。在实际编写代码使用 SDK 的时候,应尽量简化。
package main
import (
"fmt"
"os"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/regions"
cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
)
func main() {
// 必要步骤:
// 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
// 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
// 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
// 以免泄露密钥对危及你的财产安全。
credential := common.NewCredential(
os.Getenv("TENCENTCLOUD_SECRET_ID"),
os.Getenv("TENCENTCLOUD_SECRET_KEY"),
)
// 非必要步骤
// 实例化一个客户端配置对象,可以指定超时时间等配置
cpf := profile.NewClientProfile()
// SDK默认使用POST方法。
// 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求。
// 如非必要请不要修改默认设置。
//cpf.HttpProfile.ReqMethod = "GET"
// SDK有默认的超时时间,如非必要请不要修改默认设置。
// 如有需要请在代码中查阅以获取最新的默认值。
//cpf.HttpProfile.ReqTimeout = 10
// SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务,
// 则必须手动指定域名,例如云服务器的上海金融区域名: cvm.ap-shanghai-fsi.tencentcloudapi.com
//cpf.HttpProfile.Endpoint = "cvm.tencentcloudapi.com"
// SDK默认用HmacSHA256进行签名,它更安全但是会轻微降低性能。
// 如非必要请不要修改默认设置。
//cpf.SignMethod = "HmacSHA1"
// SDK 默认用 zh-CN 调用返回中文。此外还可以设置 en-US 返回全英文。
// 但大部分产品或接口并不支持全英文的返回。
// 如非必要请不要修改默认设置。
//cpf.Language = "en-US"
// 实例化要请求产品(以cvm为例)的client对象
// 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
client, _ := cvm.NewClient(credential, regions.Guangzhou, cpf)
// 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
// 你可以直接查询SDK源码确定DescribeInstancesRequest有哪些属性可以设置,
// 属性可能是基本类型,也可能引用了另一个数据结构。
// 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明。
request := cvm.NewDescribeInstancesRequest()
// 基本类型的设置。
// 此接口允许设置返回的实例数量。此处指定为只返回一个。
// SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
// SDK提供对基本类型的指针引用封装函数
request.Limit = common.Int64Ptr(1)
// 数组类型的设置。
// 此接口允许指定实例 ID 进行过滤,但是由于和接下来要演示的 Filter 参数冲突,先注释掉。
// request.InstanceIds = common.StringPtrs([]string{"ins-r8hr2upy"})
// 复杂对象的设置。
// 在这个接口中,Filters是数组,数组的元素是复杂对象Filter,Filter的成员Values是string数组。
request.Filters = []*cvm.Filter{
&cvm.Filter{
Name: common.StringPtr("zone"),
Values: common.StringPtrs([]string{"ap-guangzhou-1"}),
},
}
// 使用json字符串设置一个request,注意这里实际是更新request,即Limit=1将会被保留,
// 而过滤条件的zone将会变为ap-guangzhou-2。
// 如果需要一个全新的request,则需要用cvm.NewDescribeInstancesRequest()创建。
err := request.FromJsonString(`{"Filters":[{"Name":"zone","Values":["ap-guangzhou-2"]}]}`)
if err != nil {
panic(err)
}
// 通过client对象调用想要访问的接口,需要传入请求对象
response, err := client.DescribeInstances(request)
// 处理异常
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("An API error has returned: %s", err)
return
}
// 非SDK异常,直接失败。实际代码中可以加入其他的处理。
if err != nil {
panic(err)
}
// 打印返回的json字符串
fmt.Printf("%s", response.ToJsonString())
}
更多示例参见 examples 目录。对于复杂接口的 Request 初始化例子,可以参考 examples/cvm/v20170312/run_instances.go 。对于使用json字符串初始化 Request 的例子,可以参考 examples/cvm/v20170312/describe_instances.go 。
相关配置
代理
如果是有代理的环境下,需要设置系统环境变量 https_proxy ,否则可能无法正常调用,抛出连接超时的异常。
开启 DNS 缓存
当前 GO SDK 总是会去请求 DNS 服务器,而没有使用到 nscd 的缓存,可以通过导出环境变量GODEBUG=netdns=cgo,或者go build编译时指定参数-tags 'netcgo'控制读取 nscd 缓存。
忽略服务器证书校验
虽然使用 SDK 调用公有云服务时,必须校验服务器证书,以识破他人伪装的服务器,确保请求的安全。
但是某些极端情况下,例如测试时,你可能会需要忽略自签名的服务器证书。
以下是其中一种可能的方法:
import "crypto/tls"
...
client, _ := cvm.NewClient(credential, regions.Guangzhou, cpf)
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client.WithHttpTransport(tr)
...
再次强调,除非你知道自己在做什么,并明白由此带来的风险,否则不要尝试关闭服务器证书校验。
支持产品列表
| 包名 |
产品中文名 |
| aai |
智能语音服务,不推荐 |
| ame |
正版曲库直通车 |
| as |
弹性伸缩 |
| asr |
语音识别 |
| batch |
批量计算 |
| billing |
计费相关 |
| bizlive |
小程序·云直播 |
| bm |
黑石物理服务器 |
| bmeip |
黑石弹性公网IP |
| bmlb |
黑石负载均衡 |
| bmvpc |
黑石私有网络 |
| bri |
业务风险情报 |
| cam |
访问管理 |
| captcha |
验证码 |
| cat |
云拨测 |
| cbs |
云硬盘 |
| cdb |
云数据库 MySQL |
| cdn |
内容分发网络 |
| cds |
数盾 |
| cfs |
文件存储 |
| chdfs |
云 HDFS |
| cim |
云通信,不推荐 |
| cis |
容器实例服务,不推荐 |
| ckafka |
消息队列 Ckafka |
| clb |
负载均衡 |
| cloudaudit |
云审计 |
| cloudhsm |
数据加密服务 |
| cme |
腾讯云剪 |
| cmq |
消息队列 CMQ |
| cms |
内容安全 |
| cpdp |
企业收付平台 |
| cr |
金融联络机器人 |
| cvm |
云服务器 |
| cws |
漏洞扫描服务 |
| dayu |
大禹网络安全 |
| dbbrain |
数据库智能管家 |
| dc |
专线接入 |
| dcdb |
分布式数据库 TDSQL |
| domain |
域名注册 |
| drm |
数字版权管理 |
| ds |
电子合同服务 |
| dts |
数据传输服务 DTS |
| ecc |
英语作文批改 |
| ecdn |
全站加速网络 |
| ecm |
边缘计算模块 |
| emr |
弹性 MapReduce |
| es |
Elasticsearch服务 |
| facefusion |
人脸融合 |
| faceid |
人脸核身(云智慧眼) |
| fmu |
人脸试妆 |
| ft |
人像变换 |
| gaap |
全球应用加速 |
| gme |
游戏多媒体引擎 |
| gs |
云游戏解决方案 |
| gse |
游戏服务器引擎 |
| habo |
样本智能分析平台 |
| hcm |
数学作业批改 |
| iai |
人脸识别 |
| ic |
物联卡 |
| iot |
加速物联网套件,不推荐 |
| iotcloud |
物联网通信 |
| iotexplorer |
物联网开发平台 |
| iottid |
物联网设备身份认证TID |
| iotvideo |
物联网智能视频服务 |
| kms |
密钥管理系统 |
| live |
直播 |
| mariadb |
云数据库 MariaDB |
| memcached |
云数据库 Memcached |
| mongodb |
云数据库 MongoDB |
| monitor |
云监控 |
| mps |
视频处理 |
| ms |
应用安全 |
| msp |
迁移服务平台 |
| mvj |
营销价值判断,不推荐 |
| nlp |
腾讯知文自然语言处理 |
| npp |
号码保护 |
| ocr |
文字识别 |
| organization |
企业组织 |
| partners |
渠道合作伙伴 |
| postgres |
云数据库 PostgreSQL |
| redis |
云数据库 Redis |
| scf |
云函数 |
| smpn |
营销号码安全 |
| sms |
短信 |
| soe |
智聆口语评测 |
| solar |
智汇零售,不推荐 |
| sqlserver |
云数据库 SQL Server |
| ssl |
证书 |
| ssm |
凭据管理服务 |
| sts |
安全凭证服务 |
| tag |
标签 |
| tav |
文件检测,不推荐 |
| tbaas |
TBaaS |
| tbm |
腾讯优评 |
| tbp |
腾讯智能对话平台 |
| tcaplusdb |
游戏数据库 TcaplusDB |
| tcb |
云开发 |
| tci |
腾讯智学课堂分析 |
| tcr |
容器镜像服务 |
| tia |
智能钛机器学习,不推荐 |
| ticm |
智能鉴黄,不推荐 |
| tics |
威胁情报云查 |
| tiems |
智能钛弹性模型服务 |
| tiia |
图像分析 |
| tione |
智能钛机器学习平台 |
| tiw |
互动白板 |
| tke |
容器服务 |
| tkgdq |
腾讯知识图谱数据查询 |
| tmt |
机器翻译 |
| trtc |
实时音视频 |
| tsf |
腾讯分布式服务框架 |
| tts |
语音合成 |
| vod |
点播 |
| vpc |
私有网络 |
| wss |
SSL证书管理服务 |
| youmall |
腾讯优Mall,不推荐 |
| yunjing |
主机安全 |
| yunsou |
云搜 |