aws-doc/课程/第二阶段-核心服务/第12天-S3对象存储.md
2026-05-08 10:24:39 +08:00

175 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第12天S3 对象存储——AWS 的万能仓库
## 今天你将学到什么
S3Simple 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 的区别:什么时候用"硬盘",什么时候用"共享文件夹",什么时候用"网盘"。