使用 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")
}
确保替换 endpoint、accessKeyID 和 secretAccessKey 为你的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")
}
确保替换 bucketName、objectName 和 localFilePath 为适当的值。
步骤四:删除对象
最后,我们来学习如何删除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")
}
确保替换 bucketName 和 objectName 为适当的值。