MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
https://docs.min.io/cn/
文件上传到minio后,要进行分享时,从管理界面点击分享只能生成最多7 天有效期的链接。

或是使用sdk通过代码调用minio的Api的请求参数也是最大7天有效期。
超过期限再次访问便看不到了
有些资源是需要一直可以访问(公共资源),需要对存储空间(Bucket)进行一番设置方可。
存储空间(Bucket)默认策略有如下几种
Read Only - download
Write Only - upload
Read and Write - public
不设置 - none
从管理界面新建一个存储空间,然后查看策略,默认是为空的。
对存储空间(Bucket)的策略更改,可通过管理界面或是命令行形式更改目标桶的访问策略,当然了本质上最终都是对minio server的设置。
minio server管理界面直接操作修改
minio相关的各语言SDK使用Api请求修改
minio提供的客户端修改
当对存储空间(Bucket)按照如上三种之一设置访问策略后,直接通过如下格式访问即可
与直接点击分享链接相比,后缀那节加密算法和凭证参数就不用了
新增一条策略,设置匹配前缀,再选择Read Only 或 Read and Write后点击添加即可。
当填写前缀 * 默认该存储空间(Bucket)下所有文件都可以访问
当填写特殊前缀对应该存储空间(Bucket)下特定这个前缀开头文件可以访问
如此处设置以下d开头的前缀,那么便只有d开头的文件可以公开访问。
同时访问day.png和autumn.jpg,d前缀访问成功,其他跳转到文件目录下
此处以.Net为主,安装MinIO包,快速创建一个Bucket并设置下访问策略。
提供的SDK中由设置存储空间(Bucket)的方法,提供桶名,策略json格式字符串即可。
在官网给出的调用示例中,设置Policy的参数为一个json,其格式如下,其中部分参数是固定化的,此次需要关心的是对Resource中的Prefix设置,即管理界面中要输入的Prefix。
其格式是由aws s3中给出的,需要了解具体格式内容的话可以参考
https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/access-policy-language-overview.html
此处设置的话我们只设置Resource部分即存储空间资源部分,通过SDK提供的Api传入一个json设置。
或者从管理界面设置好后再通过SDK提供的获取桶策略获取json结构,是一致的。
如此一来,同样可以在管理界面中看到设置的策略信息以及不需要设置有效期访问文件。
minio提供了用来管理minioserver的client和admin,当使用docker时,都在minio/mc镜像下
通过命令行形式管理存储空间(Bucket)也方便,如使用docker部署,拉取minio client的镜像来管理minio server即可
拉取minio client镜像
创建minio client容器并进入容器内
将minio server加入到minio client下
ALIAS给绑定的minio server起个别名
YOUR-MINIO-ENDPOINT格式为 schema://host:port
YOUR-ACCESS-KEY和YOUR-SECRET-KEY即访问minio server的账号与密码
再直接按照给定的命令改变下桶的策略
mc policy或是mc anonymous都行,对存储空间进行策略的一系列相关操作。
(mc policy)
(mc anonymous)
设置一个prefix的前缀为public,这样一来该部分前缀的文件便可直接访问。
以上三种方式都可以设置下minio存储空间的策略,依照实际使用需要可以选择不同途径设置。如此可以对一些公共资源提供永久访问,但是也要注意安全性。
https://docs.min.io/docs/
2021-11-25,望技术有成后能回来看见自己的脚步