文档首页 > > 开发指南> Go> 入门

入门

分享
更新时间: 2019/11/15 GMT+08:00

欢迎使用华为云开发者工具套件(Go SDK)。Go SDK让您轻松编程即可访问云服务。

本教程介绍如何安装和使用Go SDK,并提供示例,方便您快速入门。

我们支持的Go SDK基于Gophercloud开发。

前提条件

  1. 已经申请到云平台账号,并开通所需的服务。
  2. 使用Go SDK时,推荐使用Go 1.9.1版本。

SDK获取和安装

请从GitHub上获取Go SDK源代码:

https://github.com/huaweicloud/huaweicloud-sdk-release/tree/master/go-sdk

在Linux系统上进行安装:

安装前,必须确保GOPATH环境变量指向待安装Gophercloud的目标目录:

mkdir $HOME/go
mkdir -p $HOME/go/src
export GOPATH=$HOME/go

下载源代码,解压安装到go的src目录下,然后执行go build 命令:

# unzip source code
unzip -d $GOPATH/src xxxxxx.zip
#run go build 
cd $GOPATH/src/github.com/gophercloud/gophercloud
go build 

开始使用

配置相关的参数,完成认证,然后就可以调用SDK来访问服务的API。参数详情请参考表1

package main

import (
	"github.com/gophercloud/gophercloud/auth/token"
	"github.com/gophercloud/gophercloud"
	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
	"github.com/gophercloud/gophercloud/openstack"
	"fmt"
)

func main() {
	//设置认证参数
	tokenOpts := token.TokenOptions{
		IdentityEndpoint: "https://iam.example.com/v3",
		Username:         "{username}",
		Password:         "{password}",
		DomainID:         "{domainid}",
		ProjectID:        "{projectid}",
	}
	//初始化provider client
	provider, providerErr := openstack.AuthenticatedClient(tokenOpts)
	if providerErr != nil {
		fmt.Println("init provider client error:", providerErr)
		panic(providerErr)
	}

	//初始化service client
	sc, serviceErr := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{})
	if serviceErr != nil {
		fmt.Println("init compute service client error:", serviceErr)
		panic(serviceErr)
	}

	//列出所有服务器
	allPages, err := servers.List(sc, servers.ListOpts{}).AllPages()

	if err != nil {
		fmt.Println("request server list error:", err)
		panic(err)
	}
	//解析返回值
	allServers, err := servers.ExtractServers(allPages)
	if err != nil {
		fmt.Println("extract response data error:", err)
		if ue, ok := err.(*gophercloud.UnifiedError); ok {
			fmt.Println("ErrCode:", ue.ErrorCode())
			fmt.Println("Message:", ue.Message())
		}
		return
	}
	//打印信息
	fmt.Println("List Servers:")
	for _, s := range allServers {
		fmt.Println("server ID is :", s.ID)
		fmt.Println("server name is :", s.Name)
		fmt.Println("server Status is :", s.Status)
		fmt.Println("server AvailbiltyZone is :", s.AvailbiltyZone)
	}
}
  • ProviderClient 是所有 OpenStack 服务需要的顶级客户端。该客户端包含所有认证详情,如URL及token ID,通过认证后,编写的Go代码就可访问API。
  • 访问某个服务时,还需要该服务的Service Client,详见各服务对应的章节。
表1 参数说明

名称

说明

取值样例

IdentityEndpoint

认证服务(IAM)的Endpoint。

“https://iam.example.com/v3”中的“example”为“区域.云平台域名”,参数详情可以访问这里了解。

https://iam.cn-north-1.myhuaweicloud.com/v3

ProjectID

项目ID。如何获取项目ID请参考如何获取domain_name、project_name和project_id ?

-

DomainID

账号ID。如何获取账号ID请参考如何获取domain_name、project_name和project_id ?

-

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区