175 lines
6.4 KiB
Markdown
175 lines
6.4 KiB
Markdown
# 第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-images`
|
||
- `mycompany-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"(阻止公开访问):
|
||
- 默认开启
|
||
- 即使你不小心设置了公开权限,这个开关也会阻止
|
||
- 除非你明确需要公开(比如托管静态网站),否则不要关闭它
|
||
|
||
---
|
||
|
||
## 今天的小测验
|
||
|
||
1. S3 的"桶名全球唯一"是什么意思?
|
||
2. 如果你有一批日志文件,前 7 天经常查看,之后很少看,1 年后可以删除,应该怎么设置生命周期规则?
|
||
3. S3 Standard 和 Glacier Deep Archive 的价格差多少倍?各自适合什么数据?
|
||
4. 为什么说 S3 没有真正的"文件夹"?
|
||
|
||
---
|
||
|
||
## 延伸阅读
|
||
|
||
- [S3 用户指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)
|
||
- [S3 定价详情](https://aws.amazon.com/s3/pricing/)
|
||
- [S3 安全最佳实践](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)
|
||
|
||
---
|
||
|
||
## 明天预告
|
||
|
||
明天学习 EBS 和 EFS——块存储和文件存储。搞清楚它们和 S3 的区别:什么时候用"硬盘",什么时候用"共享文件夹",什么时候用"网盘"。
|