fenghuo/packages/storage/docs/TESTING_S3_SERVICES.md

190 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# S3存储测试服务推荐
## 免费云端S3服务
### 1. Tebi (强烈推荐)
- **免费额度**: 25GB存储 + 250GB传输量永久免费
- **网站**: https://tebi.io
- **特点**:
- S3兼容API
- 地理分布式存储
- 支持FTP/FTPS
- 无需信用卡注册
- 提供个人助手支持
**配置示例**:
```env
STORAGE_TYPE=s3
S3_BUCKET=your-bucket-name
S3_REGION=auto
S3_ACCESS_KEY_ID=your-access-key
S3_SECRET_ACCESS_KEY=your-secret-key
S3_ENDPOINT=https://s3.tebi.io
```
### 2. Tigris
- **免费额度**: 有免费层级
- **网站**: https://www.tigrisdata.com
- **特点**:
- 全球分布式S3兼容存储
- 零出站费用
- 针对AI工作负载优化
**配置示例**:
```env
STORAGE_TYPE=s3
S3_BUCKET=your-bucket-name
S3_REGION=auto
S3_ACCESS_KEY_ID=your-access-key
S3_SECRET_ACCESS_KEY=your-secret-key
S3_ENDPOINT=https://fly.storage.tigris.dev
```
### 3. AWS S3 免费套餐
- **免费额度**: 5GB存储 + 20,000个GET + 2,000个PUT12个月
- **网站**: https://aws.amazon.com/s3/
- **注意**: 需要信用卡验证
**配置示例**:
```env
STORAGE_TYPE=s3
S3_BUCKET=your-bucket-name
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=your-access-key
S3_SECRET_ACCESS_KEY=your-secret-key
# AWS 使用默认endpoint不需要设置S3_ENDPOINT
```
## 本地测试工具
### 1. MinIO (推荐本地开发)
最流行的自托管S3兼容存储
**Docker快速启动**:
```bash
docker run -p 9000:9000 -p 9001:9001 \
--name minio \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v /tmp/minio-data:/data \
quay.io/minio/minio server /data --console-address ":9001"
```
**配置示例**:
```env
STORAGE_TYPE=s3
S3_BUCKET=test-bucket
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=minioadmin
S3_SECRET_ACCESS_KEY=minioadmin
S3_ENDPOINT=http://localhost:9000
```
### 2. S3Mock (Java项目测试)
轻量级S3模拟服务器
**Docker启动**:
```bash
docker run -p 9090:9090 -p 9191:9191 -t adobe/s3mock
```
### 3. LocalStack (完整AWS模拟)
模拟完整AWS服务栈
**Docker启动**:
```bash
docker run --rm -it -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack
```
## 快速测试步骤
### 1. 选择服务并注册
推荐从Tebi开始因为
- 免费额度最大
- 无需信用卡
- 注册简单
### 2. 获取凭据
注册后在控制面板获取:
- Access Key ID
- Secret Access Key
- 存储桶名称
- Endpoint URL
### 3. 配置环境变量
```bash
export STORAGE_TYPE=s3
export S3_BUCKET=your-bucket-name
export S3_REGION=auto
export S3_ACCESS_KEY_ID=your-access-key
export S3_SECRET_ACCESS_KEY=your-secret-key
export S3_ENDPOINT=https://s3.tebi.io
```
### 4. 测试上传
```bash
# 启动你的应用
npm run dev
# 测试上传文件
curl -X POST http://localhost:3000/upload \
-H "Content-Type: application/json" \
-d '{"filename": "test.txt", "content": "Hello S3!"}'
```
### 5. 验证存储
- 登录服务提供商的Web控制台
- 检查文件是否成功上传
- 测试下载功能
## 测试建议
1. **开始小规模测试**: 先上传小文件(< 1MB验证基本功能
2. **测试大文件**: 逐步测试更大的文件10MB, 100MB等
3. **测试分片上传**: 验证TUS分片上传功能
4. **测试下载**: 确保文件可以正确下载
5. **测试权限**: 验证访问控制和安全设置
## 故障排除
### 常见错误
1. **403 Forbidden**: 检查Access Key和Secret是否正确
2. **404 Not Found**: 确认存储桶名称和endpoint正确
3. **SSL错误**: 某些服务可能需要设置SSL选项
### 调试技巧
1. 启用详细日志
2. 使用AWS CLI工具测试连接
3. 检查网络连接和防火墙设置
## 推荐测试顺序
1. **Tebi** - 最容易开始免费额度大
2. **MinIO本地** - 完全控制无网络依赖
3. **AWS S3** - 最标准的实现用于最终验证
4. **Tigris** - 测试现代化特性
选择适合你需求的服务开始测试吧