第四十四章:Minio
一、简介
中文网址:https://www.minio.org.cn/
MinIO 是一个对象存储解决方案,提供与 Amazon Web Services S3 兼容的 API,并支持所有核心 S3 功能。MinIO 可部署在任何地方——公有云或私有云、裸机基础设施、编排环境以及边缘基础设施。
二、关键字
# Policy
Policy 是权限管理的基础设置, JSON格式
# User
用户用于登录控制台(Console)
用户的权限通过两种方式设置, 一种是直接设置 Policies, 例如 readwrite 就对所有bucket都有读写权限; 另一种是用户组, 可以继承所在用户组的 Policies
# Group
组权限通过 Policies 设置
# Access Key
access_key 由用户自己创建
每个用户可以有多个 access key, 每个 access_key 与 secret_key 组成一对, 用于接口访问时验证身份
# Bucket
Bucket 是一个文件桶, 类似于目录的概念. 可以设置容量限制, 是否保持文件版本, 是否锁定文件(防止被删除)
通过 Anonymous Access Rule 控制匿名访问的权限, 设置时需要设置一个路径前缀(不能使用通配符*).
如果可匿名读取, 那么访问文件的路径就是 http://[host]:9000/[bucket]/[file path]
三、docker 安装
访问:http://127.0.0.1:9001/login
version: '3'
services:
minio:
image: 'minio/minio:latest'
container_name: minio
restart: always
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=admin123
- MINIO_COMPRESS=on
- MINIO_COMPRESS_EXTENSIONS=.txt,.log,.csv,.json,.tar,.xml,.bin
- MINIO_COMPRESS_MIME_TYPES=text/*,application/json,application/xml
ports:
- "9000:9000"
- "9001:9001"
volumes:
- /mnt/01f/lost+found/minio/data:/data
- /mnt/01f/lost+found/minio/config:/root/.minio
四、异步封装
# python 编程,见utils ---> async_minio_api.py
getee:https://gitee.com/ysging/mqtt_django.git
# 封装逻辑
import asyncio
async def list_buckets(self):
"""获取桶列表"""
def _list_buckets():
mc = self._create_client()
return mc.list_buckets()
return await asyncio.to_thread(_list_buckets)
# 封装的方法
mc = Minio(endpoint=endpoint, access_key=access_key, secret_key=secret_key, secure=secure)
mc.make_bucket(bucket_name=bucket_name)
创建桶 bucket_exists
获取桶列表 list_buckets
删除桶 remove_bucket
上传流数据 put_object
上传文件数据 fput_object
获取流数据 get_object
获取文件数据 fget_object
获取桶中数据列表 list_objects
删除桶中数据对象 remove_object
批量删除桶中数据对象 remove_objects