API Gateway
路由、鉴权、限流。
25 分钟
API Gateway
HTTP 客户端不会直接「连 Lambda」——API Gateway 提供 REST/HTTP API 的 URL、TLS、路由、鉴权与限流,再把请求 映射成 Lambda 的 event 对象。它是 Serverless 对外暴露 API 的 前门,也是成本与延迟链路的一环。
学习目标
- 区分 REST API、HTTP API、WebSocket API 的选型
- 理解集成类型:Lambda proxy vs 非 proxy
- 配置鉴权(IAM、JWT/Cognito、API Key)与节流
请求路径
Client → API Gateway(路由 /auth / throttle)
→ Lambda Proxy Integration
→ Handler 收到 API GW 格式 JSON(headers、path、body)
→ 返回 { statusCode, headers, body }
Lambda proxy integration 把原始 HTTP 塞进一个 JSON,Handler 负责拼 HTTP 语义——简单直接;复杂路由可拆 多个函数 或前面加 BFF。
核心能力
| 能力 | 作用 | 注意 |
|---|---|---|
| 路由 | GET /tracks/{id} → 指定 Lambda | 路径参数在 event.pathParameters |
| 鉴权 | Cognito JWT、Lambda Authorizer | Authorizer 也有冷启动 |
| 限流 | 账户/阶段 throttle | 防刷;与 WAF 互补 |
| CORS | 浏览器跨域 | 在 GW 或 Lambda 返回头 |
| 阶段 | dev / prod | 不同 URL 或自定义域名 |
与 sec-auth-token 衔接:JWT 在 Authorizer 校验后,把 sub 注入 context,业务 Lambda 只信网关传来的 identity。
与 Spring MVC 对照
Spring Boot:@GetMapping + Filter 链。API GW + Lambda:路由在 YAML/控制台,鉴权可独立成 Authorizer 函数,业务 Handler 更薄。适合 API 数量少、变更频、流量波动大 的场景;复杂领域模型仍可能回到 spring-boot-essentials 单体或微服务。
成本与延迟
每次调用计费 请求数 + 数据传输;多一层 Gateway 增加 个位数毫秒。极高 QPS 且路由稳定时,要算 ALB + 容器 是否更省——见 srv-cost。
练习
- 写一个 API GW → Lambda 的 event JSON 样例(含
pathParameters) - 对比「Lambda Authorizer」与「在 Handler 里验 JWT」的利弊