S3 对象存储
bucket、权限、静态站点托管概念。
30 分钟
S3 对象存储
S3(Simple Storage Service) 存 对象(文件 + 元数据),按 bucket 组织,适合静态资源、备份、日志。宝塔把文件放在 /www/wwwroot;S3 提供 无限扩展、版本控制、生命周期,并可托管静态站点。
学习目标
- 理解 bucket、object key、存储类
- 配置公有读 vs 私有 + 预签名 URL
- 对照 CodeRoadMap 前端静态资源上云思路
核心内容
核心概念
| 概念 | 说明 |
|---|---|
| Bucket | 全局唯一命名,如 coderoadmap-lab-assets |
| Object Key | 对象路径,如 static/logo.png |
| Block Public Access | 默认阻止公网读,需显式开放 |
| Storage class | Standard / IA / Glacier,按访问频率 |
注意:bucket 名全 AWS 唯一;实验完记得 Empty + Delete。
静态站点(概念)
S3 开启 Static website hosting → 索引文档 index.html → 可选 CloudFront CDN。适合 Next.js out/ 或文档站;动态 API 仍在 EC2 / docker-essentials 容器。
Console
S3 → Create bucket → 选 Region → 阻止公有访问(默认开)→ Upload 文件 → 复制 Object URL(私有需签名)。
CLI 示例
# 创建 bucket(bucket 名需全局唯一)
aws s3 mb s3://coderoadmap-lab-$(aws sts get-caller-identity --query Account --output text)
# 上传本地目录
aws s3 sync ./dist s3://your-bucket/static/ --delete
# 列出对象
aws s3 ls s3://your-bucket/static/
# 生成预签名 URL(私有对象临时下载,1 小时)
aws s3 presign s3://your-bucket/static/report.pdf --expires-in 3600
IAM 策略见 aws-iam;批量资源用 terraform-essentials。
练习
- 创建私有 bucket,上传一张图片与一个 JSON 文件
- 用
aws s3 ls与presign验证访问 - 列出 CodeRoadMap 哪些资源适合放 S3(图片、导出、备份)
小结
S3 = 廉价、耐久的对象存储。 下一课 RDS:托管关系型数据库。
加载本节练习…