API 开发
在 AWS 上开发应用
Ricardo Sueiras
Principal Technologist
API Gateway 集成
- 多种后端集成选项
- HTTP:任何可公开路由的端点
- AWS 服务 API,如 DynamoDB 或 SNS
- Lambda 函数
- 通过 VPC 链接访问私有资源
- 无真实后端的 Mock 响应
集成类型:代理
- 集成类型决定 API Gateway 的控制程度
- 代理类型:
AWS_PROXY 和 HTTP_PROXY
- 将整个 HTTP 请求直传后端
- API Gateway 透明透传
- 响应由后端生成
集成类型:非代理
- 非代理类型:
AWS 和 HTTP
- 您可配置请求与响应转换
- 由映射模板驱动
- 模板使用 Velocity Template Language(VTL)编写
请求验证
- 在到达后端前验证请求
- 捕获缺失的必填字段
- 捕获无效的 JSON 格式
- 捕获错误的参数类型
- 失败通常返回
400 Bad Request
请求验证
- 验证的收益:
- 减少无效后端请求
- 降低 Lambda 执行成本
- 提升 API 可靠性
转换
- 在不改后端代码的情况下重塑请求与响应
- 更改负载结构
- 重命名字段
- 转换头部
- 转换数据格式
- 隐藏实现细节
- 由 VTL 映射模板提供支持
错误处理
- 两类错误
- 网关错误:由 API Gateway 抛出
- 集成错误:后端失败
- 常见网关错误:
400 Bad Request:请求验证失败
429 Too Many Requests:超出限流阈值
错误处理
- 常见集成错误:
502 Bad Gateway:响应畸形或无效
503 Service Unavailable:后端不可用或过载
504 Gateway Timeout:超出 29 秒超时
- 区域型与私有 REST API 可超过 29 秒
日志记录
- 执行日志与 CloudWatch 指标是关键排障工具
- API Gateway 与 CloudWatch 集成以提供:
日志记录
- CloudWatch 日志助您排查:
- 集成失败
- 转换错误
- 授权失败
- Lambda 执行问题
阶段:跨环境管理 API
- 一个 API 定义服务多个环境
- API Gateway 通过阶段管理这些环境
阶段:跨环境管理 API
- 一个 API 定义服务多个环境
- API Gateway 通过阶段管理这些环境
- 阶段是一个具名引用
- 指向您 API 配置的部署快照
阶段:跨环境管理 API
- 一个 API 定义服务多个环境
- API Gateway 通过阶段管理这些环境
- 阶段是一个具名引用
- 指向您 API 配置的部署快照
- 常见阶段名:
阶段:跨环境管理 API
- 一个 API 定义服务多个环境
- API Gateway 通过阶段管理这些环境
- 阶段是一个具名引用
- 指向您 API 配置的部署快照
- 常见阶段名:Dev、Test、QA、Prod
- 调用 URL 会体现阶段差异
阶段:跨环境管理 API
- 一个 API 定义服务多个环境
- API Gateway 通过阶段管理这些环境
- 阶段是一个具名引用
- 指向您 API 配置的部署快照
- 常见阶段名:Dev、Test、QA、Prod
- 调用 URL 会体现阶段差异
- 多个阶段可指向同一部署以便即时回滚
阶段能力
- 各阶段独立配置
- 配置包含阶段变量
- 阶段变量为键值对
- 将同一部署路由到不同后端
- 环境变更无需重新部署
阶段能力
- 金丝雀部署
- 仅适用于 REST API
- 将部分流量引向新部署
- 提升为全面发布
- 删除金丝雀以回滚
阶段能力
- 限流
- 缓存
- 仅适用于 REST API
- 在阶段缓存后端响应
- 客户端可用
Cache-Control 绕过
- TTL 0–3600 秒,默认 300
阶段能力
- 日志有两种模式
- 访问日志
- 由
$context 变量构建并发送到 CloudWatch 日志组
- 执行日志
- 捕获完整请求与响应详情
Preparing Video For Download...