AWS Lambda 入门
Handler、IAM;衔接 aws-lambda。
35 分钟
AWS Lambda 入门
AWS Lambda 是本站 Serverless 路径的 参考实现:Java、Python、Node 等 Handler 打包上传,由 IAM 角色 授权访问 S3、DynamoDB 等。与 aws-lambda 互补——本课偏 模型与最小可运行骨架,那课偏 AWS 控制台与账单语境。
学习目标
- 读懂 Handler 入口、event/context 与返回值
- 配置执行角色(Execution Role)与最小权限
- 知道部署包(zip / container)与运行时选型要点
最小 Handler 结构(Java)
public class Handler implements RequestHandler<Map<String, Object>, Map<String, Object>> {
@Override
public Map<String, Object> handleRequest(Map<String, Object> input, Context context) {
context.getLogger().log("requestId=" + context.getAwsRequestId());
return Map.of("statusCode", 200, "body", "ok");
}
}
Context 提供 requestId、剩余时间、内存限制——长逻辑应 主动检查 getRemainingTimeInMillis(),避免被硬杀。
IAM 与网络
| 组件 | 作用 |
|---|---|
| Execution Role | Lambda 运行时身份,访问 AWS API |
| Resource Policy | 谁可以 调用 该函数(如 S3、API GW) |
| VPC 配置 | 访问私有 RDS 时挂 ENI;会增加冷启动 |
遵循 aws-iam:只给 dynamodb:GetItem on 一张表,而不是 dynamodb:*。
部署与运行时
- Zip 部署:类路径 + 依赖 fat jar;注意 250MB 解压上限
- Container 镜像:大依赖或自定义 OS 层;冷启动可能更重
- 运行时:选 LTS(如 Java 21),与本地 CI 一致
触发器配置在函数 之外:API Gateway、S3、SQS、EventBridge 等,见 srv-events。
与 EC2 Spring Boot 的分工
| 维度 | Lambda | EC2 + Spring Boot |
|---|---|---|
| 启动 | 毫秒—秒级(含冷启动) | 分钟级部署 |
| 计费 | 请求 + GB-秒 | 实例小时 |
| 模型 | 函数 | 长期监听端口 |
本站 backend 主路径仍是 Spring Boot;Lambda 适合 边缘任务、Webhook、轻量 API。