MinIO Go 客户端使用详解:对象存储开发实战指南
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/v7go 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 := false client, 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[]