searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

配置并使用 ZOS 的 golang SDK

2023-08-28 09:30:15
73
0

前言

开发者在使用ZOS服务时,往往会使用对应的SDK,SDK提供了一系列的API和工具,可以简化与ZOS服务的交互和开发过程。开发者可以使用SDK提供的高级函数,无需手动处理低级的HTTP请求和响应。

而在所有的SDK当中,golang的SDK有以下几个优点:

  1. 高性能:golang是一种编译型语言,具有出色的性能。并且golang的sdk不像C++那样需要开发者手动编译后才能使用。
  2. 并发性能:golang天生支持并发,可以轻松处理多个请求。这对于同时上传或下载多个文件非常有用,可以提高效率。
  3. 轻量级:golang的SDK相对较小,不会占用太多的系统资源。这对于在资源受限的环境中运行应用程序非常有利。
  4. 跨平台支持:golang的SDK可以在各种操作系统上运行,这使得开发人员可以在不同的平台上使用相同的代码。

下面将介绍golang SDK的配置和使用方法。


环境准备

开发者的机器上需要安装1.5或更高版本的golang,如需下载特定版本的golang,可以在golang官网下载历史版本。

为确保后续流程顺畅,需为golang配置goproxy,具体方式可参考goproxy官网主页。

golang SDK 的初始化以及使用

接下来以“列出桶”功能为例,说明如何从零开始创建一个golang SDK项目。

首先依次使用下列指令初始化项目:

# 生成go.mod文件
go mod init sdk-demo

# 获取远程库
go get github.com/aws/aws-sdk-go@v1.35.5

等待`go get`运行完成后,项目根目录的`go.mod`文件中会多出`github.com/aws/aws-sdk-go`和`github.com/jmespath/go-jmespath`这两项依赖,其中`aws-sdk-go`为SDK本体,`go-jmespath`用于辅助goalng处理JSON数据。

创建`test.go`文件,内容如下:

// test.go的文件内容
package main

import (
	"fmt"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
)

const (
	Endpoint        = "YourEndpoint"
	AccessKey       = "YourAccessKey"
	SecretAccessKey = "YourSecretAccessKey"
)

func main() {
	svc := BuildClient()
    // 调用“列出桶”的内置函数
	result, err := svc.ListBuckets(&s3.ListBucketsInput{})
	if err != nil {
		fmt.Printf("Unable to list buckets. %v\n", err)
	} else {
		fmt.Println(result)
	}
}

// BuildClient 创建并返回一个service client
func BuildClient() *s3.S3 {
	conf := &aws.Config{
		Endpoint:         aws.String(Endpoint),
		S3ForcePathStyle: aws.Bool(false),
		DisableSSL:       aws.Bool(true),
		Credentials:      credentials.NewStaticCredentials(AccessKey, SecretAccessKey, ""),
        // 填写操作桶所在的地区
		Region:           aws.String("us-east-1"),
	}
	sess := session.Must(session.NewSessionWithOptions(session.Options{Config: *conf}))
	svc := s3.New(sess)
	return svc
}

完成上述操作之后,可以执行`go run ./test.go`查看运行结果,此时还没有创建桶,成功运行的理论结果如下:

{
  Owner: {
    DisplayName: "M. Tester",
    ID: "testid"
  }
}

创建 session 和 service client 的通用方法

使用golang SDK访问ZOS服务,需要使用AccessKey,SecretAccessKey和Endpoint来设置svc(service client)。配置svc首先需要创建一个session,session包含了svc的配置信息,一个session可用于创建多个svc。

下面是创建session和svc的示例代码:

// 依赖和需要提供的信息
import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)

const (
	Endpoint        = "YourEndpoint"
	AccessKey       = "YourAccessKey"
	SecretAccessKey = "YourSecretAccessKey"
)

// BuildSession 创建并返回一个session
func BuildSession() *session.Session {
conf := &aws.Config{
    Endpoint: aws.String(Endpoint),
    S3ForcePathStyle: aws.Bool(false),
    DisableSSL:  aws.Bool(true),
    Credentials: credentials.NewStaticCredentials(AccessKey, SecretAccessKey, ""),
    // 填写操作桶所在的地区
    Region:      aws.String("us-east-1"),
}
    sess := session.Must(session.NewSessionWithOptions(session.Options{Config: *conf}))
    return sess
}

// BuildClient 创建并返回一个service client
func BuildClient() *s3.S3 {
	conf := &aws.Config{
		Endpoint:         aws.String(Endpoint),
		S3ForcePathStyle: aws.Bool(false),
		DisableSSL:       aws.Bool(true),
		Credentials:      credentials.NewStaticCredentials(AccessKey, SecretAccessKey, ""),
        // 填写操作桶所在的地区
		Region:           aws.String("us-east-1"),
	}
	sess := session.Must(session.NewSessionWithOptions(session.Options{Config: *conf}))
	svc := s3.New(sess)
	return svc
}
0条评论
0 / 1000
青眼白龙
1文章数
0粉丝数
青眼白龙
1 文章 | 0 粉丝
青眼白龙
1文章数
0粉丝数
青眼白龙
1 文章 | 0 粉丝
原创

配置并使用 ZOS 的 golang SDK

2023-08-28 09:30:15
73
0

前言

开发者在使用ZOS服务时,往往会使用对应的SDK,SDK提供了一系列的API和工具,可以简化与ZOS服务的交互和开发过程。开发者可以使用SDK提供的高级函数,无需手动处理低级的HTTP请求和响应。

而在所有的SDK当中,golang的SDK有以下几个优点:

  1. 高性能:golang是一种编译型语言,具有出色的性能。并且golang的sdk不像C++那样需要开发者手动编译后才能使用。
  2. 并发性能:golang天生支持并发,可以轻松处理多个请求。这对于同时上传或下载多个文件非常有用,可以提高效率。
  3. 轻量级:golang的SDK相对较小,不会占用太多的系统资源。这对于在资源受限的环境中运行应用程序非常有利。
  4. 跨平台支持:golang的SDK可以在各种操作系统上运行,这使得开发人员可以在不同的平台上使用相同的代码。

下面将介绍golang SDK的配置和使用方法。


环境准备

开发者的机器上需要安装1.5或更高版本的golang,如需下载特定版本的golang,可以在golang官网下载历史版本。

为确保后续流程顺畅,需为golang配置goproxy,具体方式可参考goproxy官网主页。

golang SDK 的初始化以及使用

接下来以“列出桶”功能为例,说明如何从零开始创建一个golang SDK项目。

首先依次使用下列指令初始化项目:

# 生成go.mod文件
go mod init sdk-demo

# 获取远程库
go get github.com/aws/aws-sdk-go@v1.35.5

等待`go get`运行完成后,项目根目录的`go.mod`文件中会多出`github.com/aws/aws-sdk-go`和`github.com/jmespath/go-jmespath`这两项依赖,其中`aws-sdk-go`为SDK本体,`go-jmespath`用于辅助goalng处理JSON数据。

创建`test.go`文件,内容如下:

// test.go的文件内容
package main

import (
	"fmt"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
)

const (
	Endpoint        = "YourEndpoint"
	AccessKey       = "YourAccessKey"
	SecretAccessKey = "YourSecretAccessKey"
)

func main() {
	svc := BuildClient()
    // 调用“列出桶”的内置函数
	result, err := svc.ListBuckets(&s3.ListBucketsInput{})
	if err != nil {
		fmt.Printf("Unable to list buckets. %v\n", err)
	} else {
		fmt.Println(result)
	}
}

// BuildClient 创建并返回一个service client
func BuildClient() *s3.S3 {
	conf := &aws.Config{
		Endpoint:         aws.String(Endpoint),
		S3ForcePathStyle: aws.Bool(false),
		DisableSSL:       aws.Bool(true),
		Credentials:      credentials.NewStaticCredentials(AccessKey, SecretAccessKey, ""),
        // 填写操作桶所在的地区
		Region:           aws.String("us-east-1"),
	}
	sess := session.Must(session.NewSessionWithOptions(session.Options{Config: *conf}))
	svc := s3.New(sess)
	return svc
}

完成上述操作之后,可以执行`go run ./test.go`查看运行结果,此时还没有创建桶,成功运行的理论结果如下:

{
  Owner: {
    DisplayName: "M. Tester",
    ID: "testid"
  }
}

创建 session 和 service client 的通用方法

使用golang SDK访问ZOS服务,需要使用AccessKey,SecretAccessKey和Endpoint来设置svc(service client)。配置svc首先需要创建一个session,session包含了svc的配置信息,一个session可用于创建多个svc。

下面是创建session和svc的示例代码:

// 依赖和需要提供的信息
import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)

const (
	Endpoint        = "YourEndpoint"
	AccessKey       = "YourAccessKey"
	SecretAccessKey = "YourSecretAccessKey"
)

// BuildSession 创建并返回一个session
func BuildSession() *session.Session {
conf := &aws.Config{
    Endpoint: aws.String(Endpoint),
    S3ForcePathStyle: aws.Bool(false),
    DisableSSL:  aws.Bool(true),
    Credentials: credentials.NewStaticCredentials(AccessKey, SecretAccessKey, ""),
    // 填写操作桶所在的地区
    Region:      aws.String("us-east-1"),
}
    sess := session.Must(session.NewSessionWithOptions(session.Options{Config: *conf}))
    return sess
}

// BuildClient 创建并返回一个service client
func BuildClient() *s3.S3 {
	conf := &aws.Config{
		Endpoint:         aws.String(Endpoint),
		S3ForcePathStyle: aws.Bool(false),
		DisableSSL:       aws.Bool(true),
		Credentials:      credentials.NewStaticCredentials(AccessKey, SecretAccessKey, ""),
        // 填写操作桶所在的地区
		Region:           aws.String("us-east-1"),
	}
	sess := session.Must(session.NewSessionWithOptions(session.Options{Config: *conf}))
	svc := s3.New(sess)
	return svc
}
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0