MinIO Go SDK 操作 MinIO 对象存储| 青训营

115 阅读1分钟

使用 MinIO Go SDK 操作 MinIO 对象存储

在上一篇文章中,介绍了如何使用docker-compose快速部署minio实例,在本文中,我们将学习如何使用 MinIO Go SDK 在Go语言中操作MinIO对象存储。

步骤一:导入 MinIO Go SDK

首先,你需要导入MinIO Go SDK,以便在Go代码中使用MinIO的功能。你可以使用以下命令通过Go模块导入SDK:

go get github.com/minio/minio-go/v7

步骤二:连接到MinIO服务器

在你的Go代码中,首先需要创建一个MinIO客户端对象,然后使用该对象连接到MinIO服务器。以下是一个示例:

package main

import (
	"context"
	"fmt"
	"log"
	"github.com/minio/minio-go/v7"
	"github.com/minio/minio-go/v7/pkg/credentials"
)

func main() {
	endpoint := "localhost:9000"
	accessKeyID := "your-access-key"
	secretAccessKey := "your-secret-key"
	useSSL := false // 是否使用SSL连接

	// 创建MinIO客户端
	minioClient, err := minio.New(endpoint, &minio.Options{
		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
		Secure: useSSL,
	})
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println("Successfully connected to MinIO")
}

确保替换 endpointaccessKeyIDsecretAccessKey 为你的MinIO服务器的详细信息。

步骤三:上传和下载对象

接下来,让我们学习如何上传和下载对象。以下是一个示例,演示了如何上传一个本地文件到MinIO服务器,并从服务器上下载该文件:

func main() {
	// ...(上面的连接代码)

	bucketName := "your-bucket-name"
	objectName := "example.txt"
	localFilePath := "path/to/local/file.txt"

	// 上传对象
	_, err = minioClient.FPutObject(context.Background(), bucketName, objectName, localFilePath, minio.PutObjectOptions{})
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println("Object uploaded successfully")

	// 下载对象
	downloadFilePath := "path/to/downloaded/file.txt"
	err = minioClient.FGetObject(context.Background(), bucketName, objectName, downloadFilePath, minio.GetObjectOptions{})
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println("Object downloaded successfully")
}

确保替换 bucketNameobjectNamelocalFilePath 为适当的值。

步骤四:删除对象

最后,我们来学习如何删除MinIO服务器上的对象:

func main() {
	// ...(上面的连接代码)

	bucketName := "your-bucket-name"
	objectName := "example.txt"

	// 删除对象
	err := minioClient.RemoveObject(context.Background(), bucketName, objectName, minio.RemoveObjectOptions{})
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println("Object deleted successfully")
}

确保替换 bucketNameobjectName 为适当的值。