更新时间:2026-11-10 GMT+08:00

Go SDK调用示例

本文以调用Kafka的查询所有实例列表(ListInstances)接口为例,介绍华为云Go SDK的使用方法。

前提条件

  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK),具体操作请参见新增访问密钥。
  • 运行SDK的环境已安装Go 1.14及以上版本。

安装SDK

在命令终端执行以下命令安装华为云Go SDK。以0.1.218版本的Go SDK为例,最新的SDK版本信息可通过SDK中心查看获取。

go get github.com/huaweicloud/huaweicloud-sdk-go-v3@v0.1.218

使用SDK

以下是一个完整的Go示例,演示如何使用华为云Go SDK调用查询所有实例列表(ListInstances)接口。

  • 如果需要获取其他接口的SDK示例,请参见获取SDK示例代码。
  • 本示例中仅提供了基本的接口参数配置说明,更多的进阶配置请参见SDK的用户手册。

    如果把认证用的AK/SK直接写到代码中会有较大的安全风险,建议在配置文件或环境变量中以密文存放AK/SK,使用时解密,确保安全。本示例中把AK和SK保存为环境变量CLOUD_SDK_AK和CLOUD_SDK_SK,具体操作请参见环境变量。

    package main
    import (
        "fmt"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        kafka "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2/region"
    )
    func main() {
        // ==================== 初始化客户端 ==================== 
        // 从环境变量获取AK/SK,运行前需要提前把AK/SK设置为环境变量
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "195e********4a708ad9f9********1d"
    
        // 配置认证凭证
        auth, err := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            SafeBuild()
        if err != nil {
            fmt.Println(err)
            return
        }
    
        // 初始化客户端
        hcClient, err := kafka.KafkaClientBuilder().
             WithRegion(region.ValueOf("ap-southeast-1")).
             WithCredential(auth).
             SafeBuild()
        if err != nil {
            fmt.Println(err)
            return
        }
        client := kafka.NewKafkaClient(hcClient)
    
        // ==================== 构造请求对象 ==================== 
        // 使用SDK中提供的Request对象封装请求参数
        request := &model.ListInstancesRequest{}
        request.Engine = model.GetListInstancesRequestEngineEnum().KAFKA
    
        // ==================== 发起请求并处理响应 ==================== 
        // 通过客户端调用对应API发起请求,调用成功将返回Response对象,调用失败将在err中返回错误信息
        response, err := client.ListInstances(request)
        if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }