图片、视频、日志、备份文件攒多了,放在应用服务器磁盘上,迟早会遇到扩容慢、备份慢、账单涨得没道理的问题。阿里云的OSS就是为这类场景准备的对象存储。容量基本不用提前规划,通过 HTTP 接口读写,和应用对接也不麻烦。

阿里云OSS是什么,主要用来放什么
OSS 的基本结构是存储桶(Bucket)和对象(Object)。一个对象由文件内容、元信息和唯一的 Key 组成。你不用关心数据落在哪块磁盘上,用 SDK 或命令行工具上传、下载、删除就行。
实际项目里,常见用途大致有这几类:
- 用户头像、商品图、视频这类静态资源,放上来以后配合 CDN 分发,应用服务器少扛文件流量。
- 网站和移动端的静态文件,比如前端打包产物、安装包和下载文件。
- 应用日志和监控数据的长期归档,平时很少看,但审计时必须找得到。
- 数据备份和灾备,开启跨区域复制后,单一地域出问题时还有副本可用。
- 数据湖场景,为大数据分析平台提供底层存储,计算和存储可以分开扩容。
存储类型怎么选
选型是最容易被跳过、又最直接影响账单的一步。很多人建桶时直接用默认的标准存储,等账单出来才发现,大量几乎不读的数据一直在按热数据收费。OSS 提供的几种存储类型,差别主要在四件事上:单价、最短存储时长、取回费用和取回速度。
- 标准存储:适合频繁读写的热数据,比如正在被用户浏览的商品图、首页视频。单价最高,但读取没有额外门槛。
- 低频访问存储:适合每个月只读几次的数据,比如半年前的订单附件。单价低于标准存储,但没到最短存储时长就删除或转走,会按最短时长补算费用,读取时也要额外付费。
- 归档存储:适合很少读取的数据,比如需要留存备查的操作日志。存储单价更低,但读取前要先解冻,解冻时长随类型不同,不能指望即时打开。
- 冷归档和深度冷归档:适合长期保存的备份,基本不会读取。单价最低,取回最慢,只适合真的不会动的数据。
判断顺序其实很简单:先看访问频率,再看能不能接受等待。如果业务里有人要求秒级打开,就别把数据放进归档类。省下来的存储费,很可能在紧急取回时被补回去,甚至更多。
另一个容易踩的坑是只看单价。某份数据放在归档里看着便宜,但如果有个报表任务每天都要扫它,读取费用和取回耗时会让整体成本反而上升。选型前最好先拉一下访问日志,看看哪些前缀的数据真的被读。
场景一:商品图迁到 OSS 后怎么接 CDN
一个常见情况是商品图一直放在应用服务器上。平时还能应付,一到促销,图片请求量上去,带宽和磁盘 IO 先顶不住,页面打开就明显变慢。这时把图片迁到阿里云OSS,前面再接一层 CDN,通常能解决大部分压力。
具体做法大致是:上传改为应用直接调用 OSS 的 SDK,前端统一用 CDN 域名访问图片,CDN 回源到 OSS。这样应用服务器不再承担文件传输,大促时扩容的主要动作变成调整 CDN 配置,存储架构本身不用动。
OSS 的图片处理能力也值得用。缩略图和详情图可以共用一张原图,在 URL 里带上缩放、格式转换参数即时生成,不必单独维护一套图片处理服务。但要注意,参数是实时处理的,热门图片必须依赖 CDN 缓存,否则回源和处理请求会一起增加。
场景二:课程录像的生命周期规则
在线教育平台每天会产生大量录像。早期全部放在标准存储里,账单涨得很快,可真正被反复观看的,往往只是最近几个月的课。
更合理的做法是按访问规律设计生命周期规则,不宜一刀切。比如课程上线后 30 天内保持标准存储,保证学员观看流畅;超过 30 天自动转为低频访问存储;超过 180 天的录像转入归档,只在学员申请回看或内部审计时再取回。整个过程由生命周期规则统一执行,不需要人工逐个搬文件。
设置规则前有两点要核对。一是天数要参考真实的访问曲线,不能拍脑袋定。二是要确认转换后的读取路径,比如播放器是否需要先发起解冻请求,否则学员点开就是报错。
权限设置:别让存储桶默认公开
不少数据泄露来自存储桶被误设为公共读写。有内容社区就出现过类似情况:私有文件所在的桶被临时开放访问,部分用户资料被外部抓取。事后补救的成本远高于一开始就把权限设对。
比较稳妥的做法分三步。第一,存储桶默认私有,应用通过 RAM 子账号授权,只给必要的操作权限,不在代码里直接使用主账号密钥。第二,用户上传、下载私有文件时,后端通过 STS 临时凭证或预签名 URL 下发短期有效的访问地址,链接过期即失效。第三,敏感数据开启服务端加密,并定期查看访问日志,留意有没有异常的读取来源。
这些能力 OSS 本身都提供,关键在于项目里是否真的用上。权限设计放在项目初期,比出事后再收口省事得多。
落地前的几条建议
- 按业务和环境划分存储桶,生产和测试分开,图片、日志、备份也分开。权限好管,成本也能按桶统计。
- Key 的命名要有规律,比如按“业务/日期/类型”分层。生命周期规则和批量处理都依赖前缀匹配,命名乱了后面处理起来很费劲。
- 大文件用分片上传,网络中断时只需重传失败的分片,不用整个文件从头再来。
- 开启版本控制前先算一下成本。版本能挽回误删,但如果没有清理规则,历史版本占用的空间会悄悄涨上去。
- 每月至少看一次账单和用量报告,重点关注突然增长的桶。增长异常多半是某个任务重复写了文件,业务量未必真的上去了。
阿里云OSS用起来并不复杂。开始之前把选型、生命周期和权限这三件事想清楚,存储就能跟得上业务,账单也不容易失控。