Golang 对象存储 MinIO

990 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

MinIO作为开源的对象存储框架,其强大的适配性、方便的操作界面使得它成为了自建对象存储的首选;本文将分享如何安装MinIO,介绍操作面板的使用,以及SDK调用

安装参考文档:hub.docker.com/r/bitnami/m…

GolangSDK:min.io/docs/minio/…

通过Docker安装MinIO

  1. 创建存储文件的目录
mkdir /root/data
  1. 运行MinIO,通过环境变量 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 分别配置登入MinIO控制台的用户名和密码。
docker run -d --name minio \
    --publish 9000:9000 \
    --publish 9001:9001 \
    --env MINIO_ROOT_USER="root" \
    --env MINIO_ROOT_PASSWORD="password" \
    --volume /path/to/minio-persistence:/root/data \
    bitnami/minio:latest

操作面板介绍

  • 登入

服务启动后,使用安装时配置的用户名和密码登入MinIO控制台

  • 创建“一个桶”

桶(Bucket)可以理解为管理文件对象的文件夹,可以将有相同属性的资源放在同一个桶中

  • 修改桶的可见性

在桶的列表中,点击需要管理的桶“Manage”,可设置桶中文件的可见性

image.png

使用Golang SDK调用MinIO

准备工作

  1. 安装MinIO的Golang客户端
go get github.com/minio/minio-go/v7
  1. 配置接入点、accessKeyID、secretAccessKey,这里的accessKeyID、secretAccessKey分别为登入MinIO控制台的用户名和密码,使用minioClient来访问MinIO服务,并进行桶、文件等资源的管理
var (
   endpoint = "127.0.0.1:9000" // 接入点
   accessKeyID = "root" // 用户名
   secretAccessKey = "password" // 密码
   useSSL = false // 是否使用SSL
)
func init() {
    minioClient, err := minio.New(endpoint, &minio.Options{
       Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
       Secure: useSSL,
    })
}

文件上传

单文件上传中,核心是使用FPutObject这个方法,通过指定桶的名称、对象的名称、对象的路径等来上传文件

objectName := "test.jpg" // 对象名称
filePath := "./test.jpg" // 对象路径
contentType := "binary/octet-stream" // 正文类型
bucketName := "test" // 桶名称
info, _ := minioClient.FPutObject(context.Background(), bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contentType})
log.Printf("Successfully uploaded %s of size %d\n", objectName, info.Size)