docs: add s3 storage plan and config example

This commit is contained in:
2026-01-17 22:12:18 +08:00
parent 79146434a8
commit bb62cf4280
2 changed files with 116 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
# 真实存储 Provider 接入(生产)(先规划,后执行)
## 1. 一句话说明
- 上线环境用真实对象存储(优先 S3 兼容),开发/测试仍可用本地 FS 或 MinIO。
## 2. 要做什么 / 不做什么
- 要做:
- 生产环境能正常上传、访问、删除文件。
- 不影响现有本地/MinIO 的开发体验。
- 不做:
- 不在本次做支付集成。
- 不改现有上传业务流程,仅替换存储后端。
## 3. 当前现状
- 已支持 `local``s3`MinIO/AWS S3 兼容)两种类型:`backend/providers/storage`
- 本地存储走自签名 URLS3 走预签名 URLMinIO SDK
- 文档已覆盖 MinIO 及本地配置:`docs/storage_provider.md``docs/storage_minio_smoke_test.md`
## 4. 方案选择(最重要)
- **如果生产是 S3 兼容**AWS S3 / MinIO / 兼容网关):
- 直接用现有 `Type = "s3"`,只需要补齐配置。
- **如果生产是非 S3 兼容**OSS/COS/OBS 专有签名):
- 需要新增 Provider 类型(如 `oss`/`cos`),并实现:
- 生成签名 URL
- 上传/删除逻辑
- 保持现有 `Storage` 结构清晰,避免堆分支。
> 已确认:生产存储为 **S3 兼容**,无需新增 Provider 类型。
## 5. 必要配置(生产需要明确的信息)
- 需要确认的配置项:
- `Type``s3` 或新 Provider 类型。
- `Endpoint`:如 `https://s3.amazonaws.com` 或自建网关地址。
- `AccessKey` / `SecretKey`
- `Bucket`
- `Region`
- `PathStyle`是否使用路径风格MinIO 通常需要 `true`)。
- `BaseURL`:仅 `local` 使用。
- 约束:
- `Endpoint``Bucket` 不能为空。
- 签名 URL 需有过期时间(建议 15 分钟)。
## 6. 配置示例
### 6.1 S3 兼容
```toml
[Storage]
Type = "s3"
AccessKey = "xxx"
SecretKey = "yyy"
Region = "ap-southeast-1"
Bucket = "quyun-assets"
Endpoint = "https://s3.amazonaws.com"
PathStyle = false
```
### 6.2 本地(保持不变)
```toml
[Storage]
Type = "local"
LocalPath = "./storage"
Secret = "your-storage-secret"
BaseURL = "http://localhost:8080/t/<tenantCode>/v1/storage"
```
## 7. 实施步骤(更清晰)
1) 确认生产 Provider 类型已完成S3 兼容)。
2) 填好生产配置(已完成:补齐 `config.full.toml` 示例)。
3) 若是 S3 兼容:无需改代码,只做连通性检查。
4) 若是非 S3新增 Provider 类型并实现签名/上传/删除。
5) 回归上传链路:上传 → 回调 → 访问 URL → 删除。
## 8. 测试清单(按顺序)
- `SignURL` 输出正确(含过期参数)。
- 上传成功,访问 URL 正常HTTP 200
- 删除成功,访问返回 404 或拒绝。
- URL 过期后访问失败。
## 9. 风险与回滚
- 风险:生产 Provider 非 S3 兼容,签名不一致导致上传失败。
- 回滚:切换回 `local``s3`MinIO配置即可恢复服务。