97 lines
2.8 KiB
Markdown
97 lines
2.8 KiB
Markdown
---
|
||
title: S3-兼容对象存储
|
||
type: concept
|
||
tags: [storage, s3, minio]
|
||
date: 2025-12-29
|
||
---
|
||
|
||
# S3-兼容对象存储
|
||
|
||
## Definition
|
||
S3-兼容对象存储是指实现了 Amazon S3 API 的对象存储系统,可以在不修改代码的情况下替换 AWS S3 使用。包括 MinIO、Cloudflare R2、Backblaze B2、SeaweedFS 等。
|
||
|
||
## Core S3 Concepts
|
||
|
||
| 概念 | 说明 |
|
||
|------|------|
|
||
| Bucket | 存储桶,类似顶级文件夹 |
|
||
| Object | 对象,文件及其元数据 |
|
||
| Key | 对象的唯一标识符(路径) |
|
||
| Region | 区域,物理位置 |
|
||
| ACL | 访问控制列表 |
|
||
| Policy | IAM 策略 |
|
||
| Presigned URL | 预签名 URL,限时访问 |
|
||
|
||
## S3 vs Traditional Storage
|
||
|
||
| 特性 | S3 对象存储 | 传统文件系统 |
|
||
|------|-------------|--------------|
|
||
| 访问方式 | HTTP API | 文件路径 |
|
||
| 扩展性 | 无限扩展 | 受限于单盘/RAID |
|
||
| 成本 | 按量计费 | 一次性硬件 |
|
||
| 元数据 | 键值对灵活扩展 | 固定属性 |
|
||
| 原子性 | 最终一致性 | 强一致性 |
|
||
| 版本控制 | 原生支持 | 需额外配置 |
|
||
|
||
## MinIO Configuration for Zipline
|
||
|
||
```yaml
|
||
environment:
|
||
STORAGE_ENGINE: s3
|
||
S3_BUCKET: zipline-bucket
|
||
S3_ENDPOINT: http://minio:9000
|
||
S3_ACCESS_KEY: admin
|
||
S3_SECRET_KEY: Abcd_1234
|
||
S3_REGION: us-east-1
|
||
S3_FORCE_PATH_STYLE: "true" # 重要:MinIO 需要此设置
|
||
```
|
||
|
||
关键参数 `S3_FORCE_PATH_STYLE: "true"`:
|
||
- MinIO 默认使用虚拟主机风格(bucket.minio:9000)
|
||
- 部分应用需要路径风格(minio:9000/bucket)
|
||
- 设置为 true 确保兼容性
|
||
|
||
## Anonymous Access with mc
|
||
|
||
```bash
|
||
# 设置别名
|
||
mc alias set local http://192.168.3.17:9000 admin password
|
||
|
||
# 创建 bucket
|
||
mc mb local/zipline-bucket
|
||
|
||
# 设置匿名访问权限
|
||
mc anonymous set public local/zipline-bucket # 公共读写
|
||
mc anonymous set download local/zipline-bucket # 仅下载
|
||
|
||
# 查看匿名策略
|
||
mc anonymous list local/zipline-bucket
|
||
```
|
||
|
||
## Cloud Provider Comparison
|
||
|
||
| 提供商 | S3 兼容 | 出口流量计费 | 最小存储量 | 特色 |
|
||
|--------|----------|--------------|------------|------|
|
||
| AWS S3 | 原生 | $0.09/GB | 无 | 功能最全 |
|
||
| Cloudflare R2 | 是 | **免费** | 无 | 无出口费 |
|
||
| Backblaze B2 | 是 | $0.01/GB | 无 | 性价比高 |
|
||
| MinIO | 是 | 0 | 无 | 自托管 |
|
||
| SeaweedFS | 是 | 0 | 无 | 大文件优化 |
|
||
|
||
## Use Cases
|
||
|
||
1. **备份存储**:低频访问但需高持久性
|
||
2. **静态资源**:CDN 回源存储
|
||
3. **图床/媒体库**:直接 URL 访问
|
||
4. **AI 模型权重**:大文件存储
|
||
|
||
## Connections
|
||
- [[MinIO]] ← implements ← [[S3-兼容对象存储]]
|
||
- [[Zipline]] ← uses ← [[S3-兼容对象存储]]
|
||
- [[图床]] ← backed by ← [[S3-兼容对象存储]]
|
||
|
||
## Related Concepts
|
||
- [[对象存储]]
|
||
- [[图床]]
|
||
- [[数据一致性]]
|