MinIO 调研

MinIO 调研

背景:

用于文件上传(upload file),使用 SDK 完成文件上传或者生成临时 url ,用于文件上传,可以避免 ak/sk 泄漏风险

官方文档:

MinIO 中文入门指南:http://docs.minio.org.cn/docs/

MinIO 客户端快速入门指南:http://docs.minio.org.cn/docs/master/minio-client-quickstart-guide

MinIO Client 完全指南:http://docs.minio.org.cn/docs/master/minio-client-complete-guide

Golang Client 快速入门指南:http://docs.minio.org.cn/docs/master/golang-client-quickstart-guide

Golang Client API 参考文档:http://docs.minio.org.cn/docs/master/golang-client-api-reference

mc 相关命令使用示例

Share 命令 - 共享

share命令安全地授予上传或下载的权限。此访问只是临时的,与远程用户和应用程序共享也是安全的。如果你想授予永久访问权限,你可以看看mc policy命令。

生成的网址中含有编码后的访问认证信息,任何企图篡改URL的行为都会使访问无效。想了解这种机制是如何工作的,请参考Pre-Signed URL技术。

用法:
   mc share [FLAGS] COMMAND

FLAGS:
  --help, -h                       显示帮助。

COMMANDS:
   download   生成有下载权限的URL。
   upload     生成有上传权限的URL。
   list       列出先前共享的对象和文件夹。
子命令share upload - 共享上传

share upload命令生成不需要access key和secret key即可上传的URL。过期参数设置成最大有效期(不大于7天),过期之后权限自动回收。 Content-type参数限制只允许上传指定类型的文件。

Copy用法:
   mc share upload [FLAGS] TARGET [TARGET...]

FLAGS:
  --help, -h                       显示帮助。
  --recursive, -r              递归共享所有对象。
  --expire, -E "168h"          设置过期时限,NN[h|m|s].

示例: 生成一个curl命令,赋予上传到play/mybucket/myotherobject.txt的权限。

Copymc share upload play/mybucket/myotherobject.txt
URL: https://play.min.io/mybucket/myotherobject.txt
Expire: 7 days 0 hours 0 minutes 0 seconds
Share: curl https://play.min.io/mybucket -F x-amz-date=20160408T182356Z -F x-amz-signature=de343934bd0ba38bda0903813b5738f23dde67b4065ea2ec2e4e52f6389e51e1 -F bucket=mybucket -F policy=eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNVQxODoyMzo1NS4wMDdaIiwiY29uZGl0aW9ucyI6W1siZXEiLCIkYnVja2V0IiwibXlidWNrZXQiXSxbImVxIiwiJGtleSIsIm15b3RoZXJvYmplY3QudHh0Il0sWyJlcSIsIiR4LWFtei1kYXRlIiwiMjAxNjA0MDhUMTgyMzU2WiJdLFsiZXEiLCIkeC1hbXotYWxnb3JpdGhtIiwiQdTNC1ITUFDLVNIQTI1NiJdLFsiZXEiLCIkeC1hbXotY3JlZGVudGlhbCIsIlEzQU0zVVE4NjdTUFFRQTQzUDJGLzIwMTYwNDA4L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QiXV19 -F x-amz-algorithm=AWS4-HMAC-SHA256 -F x-amz-credential=Q3AM3UQ867SPQQA43P2F/20160408/us-east-1/s3/aws4_request -F key=myotherobject.txt -F file=@<FILE>

<FILE> 为上传的文件路径

子命令share list - 列出之前的共享

share list列出没未过期的共享URL。

Copy 用法:
   mc share list COMMAND

COMMAND:
   upload:   列出先前共享的有上传权限的URL。
   download: 列出先前共享的有下载权限的URL。

Golang SDK 示例 - 文件上传

package main

import (
	"github.com/minio/minio-go/v6"
	"log"
)

func main() {
	endpoint := "localhost:8998"
	accessKeyID := "minio"
	secretAccessKey := "minio123"
	useSSL := false

	// 初使化minio client对象。
	minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
	if err != nil {
		log.Fatalln(err)
	}

	// 创建一个叫mymusic的存储桶。
	bucketName := "your_own_bucket"
	location := "shanghai"

	err = minioClient.MakeBucket(bucketName, location)
	if err != nil {
		// 检查存储桶是否已经存在。
		exists, err := minioClient.BucketExists(bucketName)
		if err == nil && exists {
			log.Printf("We already own %s\n", bucketName)
		} else {
			log.Fatalln(err)
		}
	}
	log.Printf("Successfully created %s\n", bucketName)

	// 上传一个zip文件。
	objectName := "3.log"
	filePath := "/tmp/3.log"
	contentType := "application/zip" // 传输的文件类型

	// 使用FPutObject上传一个zip文件。
	n, err := minioClient.FPutObject(bucketName, objectName, filePath, minio.PutObjectOptions{ContentType:contentType})
	if err != nil {
		log.Fatalln(err)
	}

	log.Printf("Successfully uploaded %s of size %d\n", objectName, n)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值