切换主题
☁️ 腾讯云对象存储(COS)
腾讯云对象存储COS是一种海量、安全、低成本、高可靠的云端存储服务,提供99.9999999999%的数据持久性。
📋 配置示例
yaml
files:
- business-type: demo
file-type: cos
business-folder: demo-files
http-access-path: https://cdn.example.com
access-key-id: AKIDxxxxxxxxxxxxxxxx
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxx
bucket: my-bucket-1251238510
endpoint: ap-chengdu
max-size: 2GB
chunk-size: 10MB
allowed-upload-suffix: jpg,png,pdf,doc,docx,mp4
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: video
file-type: cos
business-folder: videos
bucket: video-bucket-1251238510
endpoint: ap-chengdu
chunk-size: 10MB
max-size: 5GB
# 图片文件
- business-type: image
file-type: cos
business-folder: images
bucket: image-bucket-1251238510
endpoint: ap-chengdu
chunk-size: 2MB
max-size: 10MB1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
📝 参数说明
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
business-type | 是 | 业务类型标识 | demo |
file-type | 是 | 固定值:cos | cos |
business-folder | 否 | 业务文件夹前缀 | demo-files |
http-access-path | 是 | 文件访问域名(CDN或COS域名) | https://cdn.example.com |
access-key-id | 是 | 腾讯云SecretId | AKIDxxxxxxxxxxxxxxxx |
access-key-secret | 是 | 腾讯云SecretKey | xxxxxxxxxxxxxxxx |
bucket | 是 | COS存储桶名称(含APPID) | my-bucket-1251238510 |
endpoint | 是 | COS地域标识 | ap-chengdu |
max-size | 否 | 单文件大小限制 | 2GB |
chunk-size | 否 | 分片上传大小(默认5MB) | 10MB |
allowed-upload-suffix | 否 | 允许的文件后缀 | jpg,png,pdf |
allow-no-suffix | 否 | 是否允许无后缀文件 | false |
allow-delete | 否 | 是否允许删除 | true |
注意
- Bucket名称格式:
{name}-{APPID},例如my-bucket-1251238510 - APPID可在账号信息中查看
- Endpoint只需填写地域标识,如
ap-chengdu,不需要完整域名
🚀 快速开始
步骤1: 创建COS存储桶
- 登录 腾讯云COS控制台
- 点击 创建存储桶
- 配置存储桶:
- 名称:如
my-app-files(系统会自动添加APPID后缀) - 所属地域:选择就近地域,如
成都 - 访问权限:私有读写(推荐)
- 存储类型:标准存储
- 名称:如
- 点击确定创建
- 记录完整的Bucket名称(含APPID)
步骤2: 获取访问密钥
安全建议
- 强烈建议使用子账号,不要使用主账号密钥
- 仅授予必要的COS权限
- 定期轮换密钥
- 开启MFA多因素认证
步骤3: 配置CDN加速(可选)
- 在COS控制台选择存储桶
- 点击 域名与传输管理 > 自定义CDN加速域名
- 添加自定义域名
- 配置HTTPS证书
- 将
http-access-path设置为CDN域名
🌍 地域列表
中国大陆
| 地域名称 | 地域标识 | 完整Endpoint |
|---|---|---|
| 北京 | ap-beijing | cos.ap-beijing.myqcloud.com |
| 南京 | ap-nanjing | cos.ap-nanjing.myqcloud.com |
| 上海 | ap-shanghai | cos.ap-shanghai.myqcloud.com |
| 广州 | ap-guangzhou | cos.ap-guangzhou.myqcloud.com |
| 成都 | ap-chengdu | cos.ap-chengdu.myqcloud.com |
| 重庆 | ap-chongqing | cos.ap-chongqing.myqcloud.com |
中国香港及海外
| 地域名称 | 地域标识 | 完整Endpoint |
|---|---|---|
| 中国香港 | ap-hongkong | cos.ap-hongkong.myqcloud.com |
| 新加坡 | ap-singapore | cos.ap-singapore.myqcloud.com |
| 孟买 | ap-mumbai | cos.ap-mumbai.myqcloud.com |
| 首尔 | ap-seoul | cos.ap-seoul.myqcloud.com |
| 曼谷 | ap-bangkok | cos.ap-bangkok.myqcloud.com |
| 东京 | ap-tokyo | cos.ap-tokyo.myqcloud.com |
| 硅谷 | na-siliconvalley | cos.na-siliconvalley.myqcloud.com |
| 弗吉尼亚 | na-ashburn | cos.na-ashburn.myqcloud.com |
| 法兰克福 | eu-frankfurt | cos.eu-frankfurt.myqcloud.com |
📦 分片上传说明
工作原理
COS分片上传使用腾讯云的Multipart Upload功能:
- 初始化:调用
InitiateMultipartUpload获取UploadId - 上传分片:并发上传各个分片,每个分片有唯一的
PartNumber - 合并分片:调用
CompleteMultipartUpload完成上传
优势
- ✅ 断点续传:支持暂停和恢复
- ✅ 并发上传:多个分片同时上传
- ✅ 大文件支持:最大支持48.82TB
- ✅ 成本优化:失败的分片可单独重传
- ✅ 无临时存储:直接上传到COS
分片大小建议
| 文件类型 | 建议分片大小 | 说明 |
|---|---|---|
| 视频文件 | 10MB - 20MB | 大文件 |
| 文档文件 | 5MB - 10MB | 中等文件 |
| 图片文件 | 2MB - 5MB | 小文件 |
分片限制
- 最小:1MB(除最后一个分片)
- 最大:5GB
- 最多分片数:10000
💡 最佳实践
1. 存储类型选择
| 存储类型 | 适用场景 | 访问延迟 | 成本 |
|---|---|---|---|
| 标准存储 | 热点数据 | 毫秒级 | 标准 |
| 低频存储 | 较少访问(每月1-2次) | 毫秒级 | 较低 |
| 归档存储 | 长期归档 | 需解冻(分钟级) | 最低 |
| 深度归档 | 极少访问 | 需解冻(小时级) | 极低 |
2. 生命周期管理
yaml
# 在COS控制台配置生命周期规则
规则1: 30天后转为低频存储
规则2: 180天后转为归档存储
规则3: 365天后删除1
2
3
4
2
3
4
3. 性能优化
yaml
# 根据文件类型优化
files:
- business-type: video
chunk-size: 20MB # 视频使用大分片
max-size: 10GB
- business-type: image
chunk-size: 2MB # 图片使用小分片
max-size: 10MB1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
4. 安全配置
防盗链
在COS控制台配置防盗链:
允许的Referer:
- https://www.example.com
- https://app.example.com
空Referer: 拒绝1
2
3
4
2
3
4
跨域配置
json
{
"AllowedOrigins": ["https://www.example.com"],
"AllowedMethods": ["GET", "POST", "PUT"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}1
2
3
4
5
6
7
2
3
4
5
6
7
❓ 常见问题
Q: 上传失败,提示SignatureDoesNotMatch?
A: 检查以下几点:
- SecretId和SecretKey是否正确
- Bucket名称是否包含APPID
- Endpoint地域标识是否正确
- 系统时间是否准确(时间偏差>15分钟会失败)
Q: 如何提高上传速度?
A:
- 选择就近地域
- 使用分片上传
- 调整分片大小(10-20MB)
- 并发上传3-5个分片
- 使用内网域名(CVM同地域)
Q: 如何降低成本?
A:
- 使用低频存储或归档存储
- 配置生命周期规则
- 定期清理无用文件
- 使用CDN减少回源流量
- 开启智能分层存储
Q: 分片上传中断如何处理?
A:
- 保存UploadId继续上传剩余分片
- 定期清理未完成的分片(碎片管理)
- 设置自动清理规则(7天)
🔗 相关链接
📊 性能参考
| 指标 | 数值 |
|---|---|
| 单文件最大 | 48.82TB |
| 分片最大 | 5GB |
| 最大分片数 | 10000 |
| 可用性 | 99.95% |
| 数据持久性 | 99.9999999999% |