综合练习
设计一个事件触发的 Lambda 方案。
40 分钟
综合练习
把本 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 |