Go
介绍
欢迎使用Zenlayer Cloud 开发者工具SDK,SDK是云 Zenlayer API 平台v2版本的配套工具。目前已经支持bmc等产品,后续所有的云服务产品都会接入进来。为方便 GO 开发者调试和接入 Zenlayer Cloud 产品 API,提供了一些使用SDK的简单示例。让您快速上手调试 GO SDK。
依赖环境
Go 环境版本必须不低于 1.9 版本以上。
使用 Zenlayer Cloud SDK Go,您需要在云平台拥有一个云账号,并在 Zenlayer 云平台控制台中的创建和查看您的 Access Key ID 和 Access Key Password。如何获取详见 帮助文档
安装
使用 go get 下载安装 SDK:
$ go get -u github.com/zenlayer/zenlayercloud-sdk-go
快速使用
每个接口都有一个对应的 Request 结构和一个 Response 结构,且请求参数均通过NewXXXRequest进行构造。 例如查询实例列表接口 DescribeInstances 有对应的请求结构体 DescribeInstancesRequest 和 返回结构体 DescribeInstancesResponse,构造的请求参数方法为bmc.NewDescribeInstancesRequest()。
以BMC服务产品下查询实例接口DescribeInstances为例:
package main
import (
"fmt"
bmc "github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/bmc20221120"
"github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/common"
"os"
)
func main() {
client, _ := bmc.NewClientWithSecretKey(os.Getenv("ZENLAYERCLOUD_SECRET_KEY_ID"), os.Getenv("ZENLAYERCLOUD_SECRET_KEY_PASSWORD"))
request := bmc.NewDescribeInstancesRequest()
request.PageSize = 1
request.PageNum = 100
response, err := client.DescribeInstances(request)
if _, ok := err.(*common.ZenlayerCloudSdkError); ok {
fmt.Printf("An API error has returned: %s", err)
return
}
fmt.Printf("%v\n", response)
}
更多配置
在创建客户端前,如有需要,common.NewConfig 中字段的值进行一些配置。
// 实例化一个客户端配置对象,可以指定超时时间等配置
conf := common.NewConfig()
具体的配置项说明如下:
超时时间
SDK有默认的超时时间,如非必要请不要修改默认设置。 如有需要请在代码中查阅以获取最新的默认值。 单位:秒
conf.Timeout = 30
调试
您可以设置环境变量 DEBUG=on
开启调试模式,调试模式会打印更详细的日志(包括请求和响应数据),当您需要进行详细的排查错误时可以开启。默认调试模式为关闭。 您也可以设置配置 config.Debug = Bool(true) 来进行开启,如下所示:
默认为 false
conf.Debug = Bool(true)
请求重试
当调用发生网络错误时,可以配置重试发起API的重试,默认重试为关闭。 您可以全局开启重试,也可以只对某一个接口请求设置重试
package main
import (
bmc "github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/bmc20221120"
"github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/common"
"os"
)
func main() {
// 全局开启重试,并设置重试次数为3次
config := common.NewConfig()
config.AutoRetry = true
config.MaxRetryTime = 3
// 配置接口重试
client, _ := bmc.NewClient(config, os.Getenv("ZENLAYERCLOUD_SECRET_KEY_ID"), os.Getenv("ZENLAYERCLOUD_SECRET_KEY_PASSWORD"))
request := bmc.NewDescribeInstanceTypesRequest()
request.SetAutoRetries(true) // 如果不设置true,则依旧使用全局的配置
request.SetMaxAttempts(2) // 覆盖全局的配置3次
response, err = client.DescribeInstanceTypes(request)
}
最后更新于