MinIO GO-SDK
随着云原生架构的发展,对象存储已成为现代数据存储的主流方式。MinIO 作为一款高性能、兼容 S3 协议的对象存储服务,因其部署灵活、开源透明等特性,在私有云和本地部署场景中得到了广泛应用。
本文将详细介绍如何使用 MinIO 的 Go 语言客户端(minio-go),实现对象的上传、下载、浏览与删除操作。内容覆盖实际开发常用操作,适合希望通过 Go 操作对象存储的工程师。
✅ 一、准备工作
1. 环境依赖
- Go 版本:建议 Go 1.16+
- MinIO 已部署并运行(本地或远程皆可)
- 获取 AccessKey 和 SecretKey
2. 安装 SDK
go get github.com/minio/minio-go/v7
go get github.com/minio/minio-go/v7/pkg/credentials
🔧 二、初始化 MinIO 客户端
import (
"bytes"
"context"
"fmt"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"io"
"log"
"log/slog"
"time"
)func main() {client := initMinioClient()
}// initMinioClient 初始化minio客户端
func initMinioClient() *minio.Client {endpoint := "127.0.0.1:9000"accessKeyID := "minioadmin"secretAccessKey := "minioadmin"useSSL := falseclient, err := minio.New(endpoint, &minio.Options{Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),Secure: useSSL,})if err != nil {log.Fatalln("初始minio客户端失败", err)}return client
}
📦 三、创建 Bucket(存储桶)
// createBucket 如果bucket不存在则创建
func createBucket(client *minio.Client, bucketName string) {exists, errBucketExists := client.BucketExists(context.Background(), bucketName)if errBucketExists != nil {slog.Info("检查bucket是否存在失败", errBucketExists)return}if !exists {err := client.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{})if err != nil {slog.Info("创建桶失败!", err)} else {slog.Info("创建桶成功!")}}
}
⬆️ 四、上传对象
// PutObject 上传文件到minio,这里直接使用byte[]