S3 到底能干什么?一篇讲透对象存储的所有使用场景
如果要在云计算里找出一个”人人都在用、却很少人说得清”的服务,那一定是 S3。
S3 最初是亚马逊的 Simple Storage Service(简单存储服务),但现在它早就不是”亚马逊专属”了——S3 已经变成对象存储的事实标准:阿里云的 OSS、腾讯云的 COS、开源的 MinIO,全都兼容 S3 的 API。你会写一套 S3 代码,在哪个云上都能跑。
那 S3 到底能干什么?这篇把它的使用场景从上到下捋一遍,总有一款是你用得到的。
先说清楚:S3 是”对象存储”,不是传统数据库或文件系统
一句话定位:S3 是”用 URL 存和取一段数据(对象)“的存储。它的核心特性决定了它能干什么:
- 无限扩展:不用担心容量,存几个对象和存几十亿个对象,对你都是”放进去、拿来用”
- 高可用耐久:数据默认在多地做冗余副本,不怕硬盘坏、机房挂
- 按量计费:存多少付多少,几乎没最低消费
- 通过 HTTP/URL 访问:天然能和 CDN、浏览器、服务器无缝对接
下面进入正题,看这些特性怎么变成具体场景。
场景一:静态资源托管(最经典,人人都在用)
网站的图片、视频、CSS/JS、用户上传的附件、安装包——这些”不改动的大文件”最适合放 S3。数据库里只存一个 URL 字符串,真正的文件在 S3 里,再套一层 CDN 全球分发。
为什么不用数据库存? 因为文件服务和高频读写查询是完全不同的负载。S3 + CDN 的组合,成本低、响应快、还不用管服务器磁盘。
适用:博客封面图、电商商品图、用户头像、视频源文件、App 安装包。
场景二:直接托管静态网站
S3 不仅能存文件,还能直接当 Web 服务器用——把静态网站(HTML/CSS/JS)往 S3 上一传,开启”静态网站托管”,域名一指向,就是一个能访问的网站。而且它自带版本控制:改坏了能一键回滚。
这是极佳的低成本建站方式:一个纯静态站(个人站、官网、落地页),不用服务器、不用运维,成本几毛钱一个月,还能配 CDN 抗大流量。
适用:个人博客、企业官网、活动落地页、SPA 应用打包产物。
场景三:备份与归档(S3 最省钱的时刻)
S3 配合生命周期(Lifecycle)规则,堪称自动化的省钱机器:数据放进去后按设定自动”降温”——热的先放标准存储随时取,几个月后自动转低频/归档,一年后转深度归档,越冷越便宜,还能自动过期清理。
这是所有”要长期留但很少看”的数据的归宿:数据库备份、服务器快照、聊天记录、合同扫描件、合规留档。
场景四:日志与可观测数据
服务器日志、访问日志、云平台的操作记录,全部可以源源不断往 S3 灌。S3 一个桶就是天然的日志仓库,再配合分析工具(或者直接给 ClickHouse 读)、全文检索(ES),就能把日志变成可查、可分析的资产。
适用:CDN 访问日志、业务埋点、审计日志、错误日志归档。
场景五:数据湖 / 大数据分析底座
大数据时代,S3 几乎成了数据湖的代名词——把所有原始数据(结构化、半结构化、非结构化)一股脑丢进 S3,再用 Spark、Flink、Presto 这些引擎去读、去算。因为 S3 便宜、能存海量数据、又和计算引擎天然解耦,“计算和存储分离”的架构才成为可能。
适用:数仓原始层、ETL 中间数据、BI 分析源数据、机器学习特征数据。
场景六:大文件分发(批量下载)
要一次性让成千上万人下载大文件(软件包、数据集、电影素材、电子书),S3 是比服务器下载稳定得多的选择——通过 S3 预签名 URL,你甚至不需要用户登录,就能给”有时限的下载链接”。
适用:软件发行、数据包下载、素材交易、临时分享链接。
场景七:AI 训练与向量数据
AI 应用火热之后,S3 又多了两个大场景:
- 训练数据存储:图片、文本、标注文件,动辄几十 TB,S3 海量存储 + 高吞吐读取正好胜任
- 文件进向量库之前的中转池:要交给 RAG 系统向量化的文档,先放 S3,再被处理程序读取、切块、转向量
适用:机器学习训练集、RAG 文档库、音视频素材训练语料。
场景八:版本控制与审计留存
S3 默认支持对象版本控制:同一个 key 每次覆盖都会留下历史版本。开启后,误删、误覆盖都能找回。这对”操作不可逆”的敏感数据(配置、备份、关键文档)是重要的保护层。
Plus:S3 的访问日志 + 权限策略还能做访问审计,谁在什么时候读写了什么,都有据可查。
S3 类实现怎么选?
| 实现 | 类型 | 特点 |
|---|---|---|
| AWS S3 | 公有云 | 功能最全、生态最标准,全球可用 |
| MinIO | 开源/自建 | 可以部署在自己服务器上,S3 API 兼容,数据私有 |
| 阿里云 OSS | 公有云 | 国内访问快、按量计费、国内备案合规方便 |
| 腾讯云 COS | 公有云 | 国内访问快、和腾讯生态(微信/QQ)集成好 |
同样一套 S3 API 代码,在哪家都能跑——这就是选它的最大好处,云厂商想换就换,代码不用大改。
那 S3 不适合干什么?
再强的工具也有边界,S3 不是万能的:
- 不适合当关系数据库:它没有事务、没有复杂查询、没有 JOIN——核心业务数据还是放 PostgreSQL/MySQL
- 不适合当缓存:读写延迟比 Redis/内存慢几个数量级,高并发热点不用它
- 不适合频繁修改小文件:S3 的对象是”整存整取”,频繁覆盖同一个对象性能差,改一个字节也要写整个对象
- 不适合强一致性的实时操作:S3 提供的是最终一致性(部分场景已强化),对”当前时刻读到的必须是最新的”这种需求要谨慎
总结
一句话:S3 是”存海量、不怕大、长期放、要省钱、能分享”这类数据的天然归宿。
它不能当数据库,也不能当缓存,但一切”不需要事务、但需要可靠存储的大文件”——图片、视频、备份、日志、训练数据、静态网站——都是它的主战场。
你在用的博客、看的视频、下的软件,背后很可能都有一个 S3 类存储撑着。搞懂它能干什么、不能干什么,你的架构设计思路会清晰很多。