
*.tencentcloudapi.com,产品的调用地址有一定区别,例如,云服务器的调用地址为cvm.tencentcloudapi.com。具体调用地址可参见对应产品的 API 文档。系统平台 | 运行命令 |
Linux / MacOS | 1 goexport GOPROXY=https://mirrors.tencent.com/go/ |
Windows | 1 goset GOPROXY=https://mirrors.tencent.com/go/ |
GO111MODULE=auto或者GO111MODULE=on,并且在您的项目中执行了 go mod init xxx。如果您使用 GOPATH,请参见:全部安装方式。安装方式 | 安装说明 | 运行命令 |
按需安装(推荐) | 安装公共基础包 | 1 bashgo get -v -u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common |
| 安装对应的产品包(如 CVM) | 1 bashgo get -v -u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm |
全部安装 | 一次性下载腾讯云所有产品的包 | 1 bashgo get -v -u github.com/tencentcloud/tencentcloud-sdk-go |
v3.0.*和3.0.*的 tag,如需追溯以前的 tag,请参见项目根目录下的 commit2tag 文件。package mainimport ("fmt""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() {credential := common.NewCredential("secretId", "secretKey")client, _ := cvm.NewClient(credential, regions.Guangzhou, profile.NewClientProfile())request := cvm.NewDescribeInstancesRequest()response, err := client.DescribeInstances(request)if _, ok := err.(*errors.TencentCloudSDKError); ok {fmt.Printf("An API error has returned: %s", err)return}if err != nil {panic(err)}fmt.Printf("%s\\n", response.ToJsonString())}
package mainimport ("fmt""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("secretId", "secretKey")// 非必要步骤// 实例化一个客户端配置对象,可以指定超时时间等配置cpf := profile.NewClientProfile()// SDK默认使用POST方法。// 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求。// 如非必要请不要修改默认设置。cpf.HttpProfile.ReqMethod = "POST"// SDK有默认的超时时间,如非必要请不要修改默认设置。// 如有需要请在代码中查阅以获取最新的默认值。cpf.HttpProfile.ReqTimeout = 30// SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务,// 则必须手动指定域名,例如云服务器的上海金融区域名: cvm.ap-shanghai-fsi.tencentcloudapi.comcpf.HttpProfile.Endpoint = "cvm.tencentcloudapi.com"// SDK默认用TC3-HMAC-SHA256进行签名,它更安全但是会轻微降低性能。// 如非必要请不要修改默认设置。cpf.SignMethod = "TC3-HMAC-SHA256"// SDK 默认用 zh-CN 调用返回中文。此外还可以设置 en-US 返回全英文。// 但大部分产品或接口并不支持全英文的返回。// 如非必要请不要修改默认设置。cpf.Language = "en-US"//打印日志,默认是false// cpf.Debug = true// 实例化要请求产品(以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"}),},}// 通过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\\n", response.ToJsonString())}
profile.ClientProfile中字段的值进行一些配置。// 非必要步骤// 实例化一个客户端配置对象,可以指定超时时间等配置cpf := profile.NewClientProfile()
cpf.HttpProfile.ReqMethod = "POST"
cpf.HttpProfile.ReqTimeout = 30
cpf.HttpProfile.Endpoint = "cvm.tencentcloudapi.com"
TC3-HMAC-SHA256 进行签名,它更安全但是会轻微降低性能。cpf.SignMethod = "HmacSHA1"
false。cpf.Debug = true
https_proxy,否则可能无法正常调用,抛出连接超时的异常。GODEBUG=netdns=cgo,或者go build编译时指定参数-tags 'netcgo'控制读取 nscd 缓存。import "crypto/tls"...client, _ := cvm.NewClient(credential, regions.Guangzhou, cpf)tr := &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true},}client.WithHttpTransport(tr)...
v1.0.181 开始,腾讯云 GO SDK 会将各个产品的返回的错误码定义为常量,您可以直接调用处理,无需手动定义。如果您使用 IDE (如 Goland )进行开发,可以使用他们的代码提示功能直接选择。例如:...//Your other go code// Handling errorsresponse, err := client.DescribeInstances(request)if terr, ok := err.(*errors.TencentCloudSDKError); ok {code :=terr.GetCode()if code == cvm.FAILEDOPERATION_ILLEGALTAGKEY{fmt.Printf("Handling error: FailedOperation.IllegalTagKey,%s", err)}else if code == cvm.UNAUTHORIZEDOPERATION{fmt.Printf("Handling error: UnauthorizedOperation,%s", err)}else{fmt.Printf("An API error has returned: %s", err)}return}...
// DescribeInstances// 本接口 (DescribeInstances) 用于查询一个或多个实例的详细信息。//////// * 可以根据实例`ID`、实例名称或者实例计费模式等信息来查询实例的详细信息。过滤信息详细请见过滤器`Filter`。//// * 如果参数为空,返回当前用户一定数量(`Limit`所指定的数量,默认为20)的实例。//// * 支持查询实例的最新操作(LatestOperation)以及最新操作状态(LatestOperationState)。//// 可能返回的错误码:// FAILEDOPERATION_ILLEGALTAGKEY = "FailedOperation.IllegalTagKey"// FAILEDOPERATION_ILLEGALTAGVALUE = "FailedOperation.IllegalTagValue"// FAILEDOPERATION_TAGKEYRESERVED = "FailedOperation.TagKeyReserved"// INTERNALSERVERERROR = "InternalServerError"// INVALIDFILTER = "InvalidFilter"// INVALIDFILTERVALUE_LIMITEXCEEDED = "InvalidFilterValue.LimitExceeded"// INVALIDHOSTID_MALFORMED = "InvalidHostId.Malformed"// INVALIDINSTANCEID_MALFORMED = "InvalidInstanceId.Malformed"// INVALIDPARAMETER = "InvalidParameter"// INVALIDPARAMETERVALUE = "InvalidParameterValue"// INVALIDPARAMETERVALUE_IPADDRESSMALFORMED = "InvalidParameterValue.IPAddressMalformed"// INVALIDPARAMETERVALUE_INVALIDIPFORMAT = "InvalidParameterValue.InvalidIpFormat"// INVALIDPARAMETERVALUE_INVALIDVAGUENAME = "InvalidParameterValue.InvalidVagueName"// INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded"// INVALIDPARAMETERVALUE_SUBNETIDMALFORMED = "InvalidParameterValue.SubnetIdMalformed"// INVALIDPARAMETERVALUE_TAGKEYNOTFOUND = "InvalidParameterValue.TagKeyNotFound"// INVALIDPARAMETERVALUE_VPCIDMALFORMED = "InvalidParameterValue.VpcIdMalformed"// INVALIDSECURITYGROUPID_NOTFOUND = "InvalidSecurityGroupId.NotFound"// INVALIDSGID_MALFORMED = "InvalidSgId.Malformed"// INVALIDZONE_MISMATCHREGION = "InvalidZone.MismatchRegion"// RESOURCENOTFOUND_HPCCLUSTER = "ResourceNotFound.HpcCluster"// UNAUTHORIZEDOPERATION_INVALIDTOKEN = "UnauthorizedOperation.InvalidToken"func (c *Client) DescribeInstances(request *DescribeInstancesRequest) (response *DescribeInstancesResponse, err error){...}
v1.0.189开始,腾讯云 GO SDK 支持使用 泛用型的API调用方式(Common Request) 进行请求。您只需安装 common 包, 即可向任何产品发起调用。ClientProfile 配置重试次数和重试间隔时间。Request 结构体是否存在 ClientToken 字段,存在该字段则认为是幂等请求。幂等请求才会在网络错误时自动重试,非幂等请求会抛出异常,防止请求多次重放造成结果不一致。package mainimport ("github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common""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() {credential := common.NewCredential("secretId", "secretKey")prof := profile.NewClientProfile()prof.NetworkFailureMaxRetries = 3 // 定义最大重试次数prof.NetworkFailureRetryDuration = profile.ExponentialBackoff // 定义重试建个时间client, _ := cvm.NewClient(credential, regions.Guangzhou, prof)// ...}
ClientProfile 配置重试次数和重试间隔时间。package mainimport ("github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common""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() {credential := common.NewCredential("secretId", "secretKey")prof := profile.NewClientProfile()prof.RateLimitExceededMaxRetries = 3 // 定义最大重试次数prof.RateLimitExceededRetryDuration = profile.ExponentialBackoff // 定义重试建个时间client, _ := cvm.NewClient(credential, regions.Guangzhou, prof)// ...}
ClientToken 参数(如果请求存在ClientToken字段且为空)。当用户手动指定 ClientToken 时,会跳过注入流程。ClientToken 在 100000/s 并发量以下提供全局唯一性。imported and not used: "os",说明“ os ”这个包并未在代码中使用到,去掉即可。文档反馈