简介 #
MinIO 是一个高性能对象存储,发布于 GNU Affero 通用公共许可证 v3.0。它与 Amazon S3 云存储服务 API 兼容。使用 MinIO 构建高性能基础设施,以支持机器学习、分析和应用数据工作负载。
安装 #
容器安装 #
独立的 MinIO 服务器最适合早期开发和评估。某些功能,如版本控制、对象锁定和存储桶复制,需要分布式部署 MinIO 并启用纠删码。对于扩展开发和生产,部署启用纠删码的 MinIO - 特别是每个 MinIO 服务器至少需要 4 个驱动器。有关更完整的文档,请参见 MinIO 纠删码.
运行 [[Podman]] 命令以使用临时数据卷运行最新的稳定版 MinIO 镜像作为容器:
podman run -p 9000:9000 -p 9001:9001 \
quay.io/minio/minio server /data --console-address ":9001"
MinIO 部署使用默认的根凭据 minioadmin:minioadmin 开始。可以使用 MinIO 控制台测试部署,MinIO 控制台是内置于 MinIO 服务器的嵌入式对象浏览器。将运行在主机上的网页浏览器指向 http://127.0.0.1:9000 并使用根凭据登录。可以使用浏览器创建存储桶、上传对象并浏览 MinIO 服务器的内容。
还可以使用任何兼容 S3 的工具进行连接,例如 MinIO Client mc 命令行工具。有关使用 mc 命令行工具的更多信息,请参见使用 MinIO Client mc 进行测试。
也可以使用 Docker 进行部署
version: '3.8'
services:
minio:
image: quay.io/minio/minio
container_name: minio1
restart: unless-stopped
user: "${UID}:${GID}"
environment:
MINIO_ROOT_USER: "ROOTUSER"
MINIO_ROOT_PASSWORD: "CHANGEME123"
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ${HOME}/minio/data:/data
command: server /data --console-address ":9001"
Play 服务器 #
https://play.min.io.
公共的 MinIO 服务器,用于测试和开发。此示例中显示的访问凭据对公众开放,上传到 play 的所有数据应视为公开和不受保护。
SDK #
MinIO SDK: https://min.io/docs/minio/linux/developers/minio-drivers.html
初始化 MinIO 客户端 #
参数:
endpoint:对象存储服务的 URL_minio.Options_:所有选项,包括凭据,自定义传输等
package main
import (
"log"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func main() {
endpoint := "play.min.io"
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
useSSL := true
// Initialize minio client object.
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if err != nil {
log.Fatalln(err)
}
log.Printf("%#v\n", minioClient) // minioClient is now set up
}
读写策略设置 #
要在 MinIO 中设置桶(bucket)为公开读取但私有写入,需要配置桶策略(bucket policy)。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "*"},
"Action": ["s3:GetObject", "s3:GetBucketLocation", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}