切换主题
☁️ S3协议对象存储
兼容Amazon S3协议的对象存储服务,支持多种云服务商和自建存储。
配置示例
yaml
files:
- business-type: demo
file-type: s3
business-folder: demo-files
http-access-path: https://cdn.example.com
access-key-id: AKIAXXXXXXXXXXXXXXXX
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxx
bucket: my-bucket
endpoint: s3.us-east-1.amazonaws.com
max-size: 100MB
chunk-size: 10MB
allowed-upload-suffix: jpg,png,pdf,doc,docx
allow-delete: true1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
yaml
files:
- business-type: demo
file-type: s3
business-folder: demo-files
http-access-path: https://cdn.example.com
access-key-id: AKXXXXXXXXXXXXXXXXXX
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxx
bucket: my-bucket
endpoint: s3.cn-north-1.jdcloud-oss.com
max-size: 100MB
chunk-size: 10MB
allowed-upload-suffix: jpg,png,pdf,doc,docx
allow-delete: true1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
yaml
files:
- business-type: demo
file-type: s3
business-folder: demo-files
http-access-path: https://minio.example.com
access-key-id: minioadmin
access-key-secret: minioadmin
bucket: my-bucket
endpoint: minio.example.com:9000
max-size: 100MB
chunk-size: 10MB
allowed-upload-suffix: jpg,png,pdf,doc,docx
allow-delete: true1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
参数说明
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
business-type | 是 | 业务类型标识 | demo |
file-type | 是 | 固定值:s3 | s3 |
business-folder | 否 | 业务文件夹前缀 | demo-files |
http-access-path | 是 | 文件访问域名(CDN或S3域名) | https://cdn.example.com |
access-key-id | 是 | S3访问密钥ID | AKIAXXXXXXXXXXXXXXXX |
access-key-secret | 是 | S3访问密钥Secret | xxxxxxxxxxxxxxxx |
bucket | 是 | S3存储桶名称 | my-bucket |
endpoint | 是 | S3服务端点 | s3.us-east-1.amazonaws.com |
max-size | 否 | 单文件大小限制 | 100MB |
chunk-size | 否 | 分片上传大小(默认5MB) | 10MB |
allowed-upload-suffix | 否 | 允许的文件后缀 | jpg,png,pdf |
allow-no-suffix | 否 | 是否允许无后缀文件 | false |
allow-delete | 否 | 是否允许删除 | true |
快速开始
1. Amazon S3
- 登录AWS控制台
- 创建S3存储桶
- 在IAM中创建用户并授予S3权限
- 创建访问密钥
- 记录Bucket名称和Region
2. 京东云OSS
- 登录京东云控制台
- 创建OSS存储空间
- 获取AccessKey和SecretKey
- 记录Bucket名称和Endpoint
3. MinIO
- 部署MinIO服务器
- 创建Bucket
- 创建访问密钥
- 配置Endpoint地址
安全建议
- 使用子账号或IAM用户
- 仅授予必要的S3权限
- 定期轮换访问密钥
- 开启HTTPS访问
- 配置存储桶策略
兼容服务列表
| 服务商 | Endpoint示例 | 说明 |
|---|---|---|
| Amazon S3 | s3.{region}.amazonaws.com | 全球领先的对象存储 |
| 京东云OSS | s3.{region}.jdcloud-oss.com | 国内S3兼容服务 |
| MinIO | minio.example.com:9000 | 开源对象存储 |
| Ceph RGW | rgw.example.com | 分布式存储系统 |
| DigitalOcean Spaces | {region}.digitaloceanspaces.com | 简单易用的对象存储 |
最佳实践
存储类型选择
| 存储类型 | 适用场景 | 特点 |
|---|---|---|
| 标准存储 | 热点数据、频繁访问 | 高可用、低延迟 |
| 低频访问 | 较少访问的数据 | 成本更低 |
| 归档存储 | 长期归档 | 成本最低,需解冻 |
性能优化
yaml
# 大文件使用较大的分片
files:
- business-type: video
chunk-size: 10MB # 视频文件
- business-type: document
chunk-size: 5MB # 文档文件1
2
3
4
5
6
7
2
3
4
5
6
7
安全配置
访问控制
- 设置存储桶为私有
- 使用IAM策略控制权限
- 配置存储桶策略
防盗链
- 配置CORS规则
- 设置Referer白名单
- 使用签名URL
加密
- 开启服务端加密
- 使用KMS密钥管理
- 传输层使用HTTPS
常见问题
Q: 如何选择合适的S3服务?
A: 考虑以下因素:
- 地域覆盖:选择就近的服务商
- 价格:对比存储和流量费用
- 功能:确认是否支持所需特性
- 稳定性:查看SLA保障
- 生态:考虑与现有系统的集成
Q: MinIO如何配置?
A:
- 部署MinIO服务器
- 创建Bucket和访问密钥
- Endpoint填写MinIO服务地址
- 注意端口号(默认9000)
- 配置反向代理(生产环境)
Q: 如何提高上传速度?
A:
- 选择就近的地域
- 使用分片上传(大文件)
- 调整
chunk-size大小 - 检查网络带宽
- 开启CDN加速
- 使用传输加速(如支持)
Q: 连接失败如何排查?
A:
- 检查Endpoint格式是否正确
- 验证网络连接和防火墙
- 确认访问密钥是否有效
- 检查存储桶是否存在
- 查看服务日志详细错误