6.4 KiB
6.4 KiB
第12天:S3 对象存储——AWS 的万能仓库
今天你将学到什么
S3(Simple Storage Service)是 AWS 最早的服务(2006 年上线),也是用途最广的服务。从存一张图片到建一个数据湖,它几乎无处不在。
今天学完你会明白:S3 是什么、怎么用、怎么省钱、怎么保护数据安全。
S3 是什么
S3 是一个对象存储服务。
"对象存储"是什么意思?先和你熟悉的东西对比:
| 存储类型 | 类比 | 特点 |
|---|---|---|
| 块存储(EBS) | 电脑硬盘 | 挂载到一台电脑上,可以装操作系统 |
| 文件存储(EFS) | 共享文件夹 | 多台电脑可以同时访问 |
| 对象存储(S3) | 网盘/云盘 | 通过网络上传下载,无限容量 |
S3 的核心特点:
- 无限容量:想存多少存多少,没有上限
- 极高耐久性:99.999999999%(11 个 9)的数据不丢失概率。意味着如果你存了 1000 万个文件,平均 1 万年才可能丢 1 个。
- 通过网络访问:用 URL 或 API 上传下载,不是挂载为磁盘
- 按量付费:存了多少 GB 付多少钱
核心概念
桶(Bucket)
桶是存放文件的"容器",类似于你电脑上的一个顶级文件夹。
重要规则:
- 桶的名字全球唯一——全世界所有 AWS 用户共享一个命名空间。如果有人用了
my-photos,你就不能再用这个名字了。 - 创建桶时要选择一个 Region,你的数据就存在那个 Region 里。
- 一个 AWS 账户最多 100 个桶(可以申请增加)。
命名建议:用有意义的前缀,比如 公司名-项目名-用途:
mycompany-webapp-imagesmycompany-logs-2024
对象(Object)
对象就是你存进去的文件。每个对象由三部分组成:
- Key(键):文件的"路径名",比如
photos/2024/vacation/beach.jpg - Value(值):文件的实际内容(最大 5TB)
- Metadata(元数据):关于文件的附加信息(类型、大小、创建时间等)
注意:虽然 Key 里有 /,看起来像文件夹结构,但 S3 实际上是扁平的——没有真正的文件夹。控制台显示的"文件夹"只是为了方便你浏览。
S3 能用来做什么
S3 的用途广得超乎想象:
| 用途 | 说明 |
|---|---|
| 静态网站托管 | 把 HTML/CSS/JS 放在 S3 上,直接当网站用 |
| 图片/视频存储 | APP 的用户头像、上传的视频 |
| 备份 | 数据库备份、服务器快照 |
| 日志存储 | 各种服务的运行日志 |
| 大数据湖 | 集中存储所有原始数据,供分析使用 |
| 软件分发 | 存放安装包、更新文件 |
| 灾难恢复 | 跨 Region 复制关键数据 |
存储类别——同样的文件,不同的价格
S3 有多种存储类别,核心逻辑是:访问越频繁的数据越贵,访问越少的数据越便宜。
用仓库来类比:
- 经常用的东西放在手边的架子上(贵,但拿取方便)
- 偶尔用的东西放在仓库深处(便宜,但找起来费时间)
- 几年不用的东西放在异地仓库(最便宜,但取回来要等很久)
| 存储类别 | 适合什么数据 | 存储费用 | 取回速度 |
|---|---|---|---|
| Standard(标准) | 经常访问的数据 | 最高 | 即时 |
| Standard-IA(低频访问) | 每月访问一两次 | 较低 | 即时 |
| Glacier Instant | 每季度访问一次 | 更低 | 即时 |
| Glacier Flexible | 每年访问一两次 | 很低 | 分钟到小时 |
| Glacier Deep Archive | 几年才访问一次 | 最低 | 12-48 小时 |
| Intelligent-Tiering | 不确定访问频率 | 自动优化 | 即时 |
举个具体的价格对比(us-east-1,存 1TB 数据一个月):
- Standard:$23/月
- Standard-IA:$12.5/月
- Glacier Deep Archive:$1/月
差距巨大!所以把不常用的数据移到便宜的层级,能省很多钱。
Intelligent-Tiering(智能分层)
如果你不确定数据的访问频率,选这个最省心:
- S3 自动监控每个文件的访问频率
- 30 天没访问 → 自动移到低频层
- 90 天没访问 → 自动移到归档层
- 再次访问时 → 自动移回高频层
你不需要做任何事情,S3 帮你自动优化成本。
生命周期规则——自动管理数据
你可以设置规则,让 S3 自动帮你管理数据的"一生":
例子:日志文件的生命周期
上传(Standard)
→ 30 天后自动转为 Standard-IA(不常看了)
→ 90 天后自动转为 Glacier(归档保存)
→ 365 天后自动删除(不需要了)
设置一次,永远自动执行。不用你记着去手动清理。
数据安全
默认私有
S3 的数据默认是私有的——只有你自己能访问。别人既看不到也下载不了。
加密
- 传输加密:数据在网络上传输时自动加密(HTTPS)
- 存储加密:数据存在磁盘上时也是加密的(默认启用)
版本控制
开启版本控制后,S3 会保留文件的所有历史版本:
- 不小心覆盖了文件?可以恢复到之前的版本
- 不小心删除了文件?可以找回来(删除只是加了个标记)
就像文档的"历史版本"功能——你可以回到任何一个时间点的状态。
防止公开访问
AWS 提供了一个总开关叫 "Block Public Access"(阻止公开访问):
- 默认开启
- 即使你不小心设置了公开权限,这个开关也会阻止
- 除非你明确需要公开(比如托管静态网站),否则不要关闭它
今天的小测验
- S3 的"桶名全球唯一"是什么意思?
- 如果你有一批日志文件,前 7 天经常查看,之后很少看,1 年后可以删除,应该怎么设置生命周期规则?
- S3 Standard 和 Glacier Deep Archive 的价格差多少倍?各自适合什么数据?
- 为什么说 S3 没有真正的"文件夹"?
延伸阅读
明天预告
明天学习 EBS 和 EFS——块存储和文件存储。搞清楚它们和 S3 的区别:什么时候用"硬盘",什么时候用"共享文件夹",什么时候用"网盘"。