大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把本 track 串起来:设计并实现(或纸面设计)一个「S3 上传 → Lambda 处理 → DynamoDB 记录 → HTTP 查询」的最小方案。目标不是堆服务,而是 事件驱动、无状态、可迁移、成本可估。
学习目标
- 独立完成 Serverless 方案的需求拆分与组件选型
- 对照 srv-intro 至 srv-cost 的检查清单
- 衔接 aws-essentials、dynamodb-essentials、scaling-essentials
任务说明:课程封面上传流水线
假设 CodeRoadMap 允许维护者为 track 上传 封面图(实验功能):
- 维护者
PUT图片到 S3covers/{trackSlug}.png - S3 事件触发 ResizeLambda:生成 thumbnail,写回 S3
- 同事件或 Stream 触发 MetaLambda:更新 DynamoDB
TrackMeta(slug、coverUrl、updatedAt) - 读者
GET /tracks/{slug}经 API Gateway → QueryLambda 读 DynamoDB 返回 JSON
必含设计要素
┌─────────┐ PUT ┌────┐ event ┌─────────────┐
│ Admin │ ────────► │ S3 │ ────────► │ ResizeLambda │
└─────────┘ └────┘ └──────┬──────┘
│ write thumb
┌─────────┐ GET ┌──────────┐ invoke ┌─────────────┐
│ Client │ ───────► │ API GW │ ────────► │ QueryLambda │
└─────────┘ └──────────┘ └──────┬──────┘
│ GetItem
┌────▼────┐
│ DynamoDB │
└─────────┘
| 检查项 | 对应课 |
|---|---|
| IAM 最小权限 | srv-lambda、aws-iam |
| 幂等(重复 S3 通知) | srv-events、kafka-delivery |
| 冷启动与包体积 | srv-cold-start |
| 无状态、表设计 PK/SK | srv-state、ddb-keys |
| SAM 模板与本地 invoke | srv-local |
| 月成本粗算 | srv-cost |
交付物(二选一)
A. 纸面设计(最低)
- 一页架构图 + IAM 策略 bullet + DynamoDB 表结构
- 列出 3 个失败场景与 DLQ/告警处理
B. AWS 实验(推荐有 free tier 者)
- SAM 模板 + 两个 Handler 骨架(可 Java 或 Node)
sam local invoke截图或 CloudWatch 日志一行- 实验后
sam delete销毁栈
自检清单
- Handler 无本地 Session / 无
CREATE TABLE - S3 → Lambda 处理 幂等(同一 key 重复通知不出错)
- API 鉴权:至少说明 dev 开放、prod 用 API Key 或 Cognito
- 估算每月 1000 次上传 + 10 万次读 的主要费用项
- 指出哪一段若迁出 AWS 最难替换
与路线图
完成后回到 devops / 全栈路线图,勾选 Serverless / Lambda / 事件驱动 节点。数据建模薄弱则补 orm-er;消息语义深入见 kafka-practice。
小结
事件进、函数算、外部存、HTTP 出——Serverless 合格方案不过如此。 本 track 完结;生产环境仍要监控、成本与 reliability-essentials 里的 SLO 意识。