Lambda 无服务器
事件驱动、冷启动、适用边界。
30 分钟
Lambda 无服务器
Lambda 按 事件 运行代码,无需常驻 EC2。适合 Webhook、定时任务、S3 上传触发;不适合 CodeRoadMap 这种长连接 Web 主站(冷启动、执行时长限制)。
学习目标
- 理解事件源、Handler、部署包/容器镜像
- 评估 Lambda vs EC2 vs docker-essentials 边界
- 写一个最小 HTTP 或 S3 触发函数
核心内容
适用边界
| 场景 | 推荐 |
|---|---|
| 定时清理 S3、报表 | Lambda + EventBridge |
| 图片缩略图 | S3 事件 → Lambda |
| CodeRoadMap 主 API | EC2 / ECS / kubernetes-essentials |
| 高并发短任务 | Lambda 自动扩缩 |
冷启动:Java 运行时首包较慢;Node/Python 更轻。宝塔 Node :3000 进程常驻;Lambda 按毫秒计费、按次扩缩。
最小 Handler(Node 概念)
exports.handler = async (event) => {
return { statusCode: 200, body: JSON.stringify({ ok: true, event }) };
};
Console
Lambda → Create function → Author from scratch → Runtime Node 20 → 添加 Test event → Deploy。
API Gateway 可暴露 HTTP;实验可用 Function URL(注意鉴权)。
CLI 示例
# 创建函数(需事先打包 deployment.zip 与 execution role ARN)
aws lambda create-function --function-name coderoadmap-hello \
--runtime nodejs20.x --role arn:aws:iam::123456789012:role/lambda-basic \
--handler index.handler --zip-file fileb://deployment.zip
# 同步调用
aws lambda invoke --function-name coderoadmap-hello --payload '{}' out.json && cat out.json
# 查看配置
aws lambda get-function-configuration --function-name coderoadmap-hello
基础设施编排见 terraform-essentials 或 aws-cdk。
练习
- 创建 Node Lambda,Test 返回 JSON
- (可选)配置 S3 上传触发,打印 object key
- 列出 CodeRoadMap 哪些任务适合 Lambda、哪些必须 EC2
小结
Lambda = 事件驱动、按量计费的无服务器函数。 下一课 ECS:容器上云。