在 AWS 上设计 API
在 AWS 上开发应用
Ricardo Sueiras
Principal Technologist
API Gateway
- Amazon API Gateway:用于构建 API 的托管服务。
- 设计、部署、管理并保护您的 API。
Amazon API Gateway 的能力
- 实现不同类型的 API。
- 集成后端服务。
- 保护 API 访问。
Amazon API Gateway 的能力
- 实现不同类型的 API。
- 集成后端服务。
- 保护 API 访问。
- 节流请求以保护后端。
Amazon API Gateway 的能力
- 实现不同类型的 API。
- 集成后端服务。
- 保护 API 访问。
- 节流请求以保护后端。
- 转换请求与响应负载。
Amazon API Gateway 的能力
- 实现不同类型的 API。
- 集成后端服务。
- 保护 API 访问。
- 节流请求以保护后端。
- 转换请求与响应负载。
- 向使用方发布 API。
Amazon API Gateway 的能力
- 实现不同类型的 API。
- 集成后端服务。
- 保护 API 访问。
- 节流请求以保护后端。
- 转换请求与响应负载。
- 向使用方发布 API。
- 管理 API 全生命周期:版本、部署、别名。
API 类型
- API Gateway 支持三种 API 类型:
- REST APIs
- HTTP APIs
- WebSocket APIs
API Gateway 终端节点
- 终端节点决定客户端如何访问您的 API。
- 边缘优化:AWS 托管的 CloudFront,全球低延迟。
- 区域:部署到特定 AWS 区域。
- 私有:仅通过 AWS PrivateLink 访问。
- 私有终端节点不走公网。
REST APIs
- 功能最丰富的 API Gateway 选项。
- 基于同步请求/响应模型。
REST API 用例
- 需要全生命周期管理的企业级 API。
- 需要高级安全控制的 API。
- 面向三方开发者的生态(API Key 与使用计划)。
- 直接集成 AWS 服务,无需 Lambda。
API Gateway 对 REST API 的支持
- 请求校验。
- API Key。
- 使用计划与限流。
- 可配置 TTL 的响应缓存。
- 通过 VTL 模板转换请求/响应。
- IAM 认证(Signature V4)。
- Lambda 授权器、Cognito 用户池。
API Gateway 对 REST API 的支持
- 支持三种终端节点:
- 结合 AWS WAF 防护 Web 攻击。
- 金丝雀发布部署。
- 通过 AWS X-Ray 与 CloudWatch 日志观测。
HTTP API 用例
- 无服务器工作负载与基于 Lambda 的 API。
- 微服务与轻量代理型 API。
- 对延迟敏感的应用。
- 使用 OAuth 2.0 / OIDC 认证的 API。
API Gateway 对 HTTP API 的支持
- Lambda 代理集成与授权器。
- 原生 JWT/OIDC 授权(Cognito、Auth0、Okta)。
- 在 API 级别内置 CORS 配置。
- 通过 VPC Link 的私有 VPC 集成。
- 针对请求头、查询字符串和路径的基础参数映射。
HTTP API 的取舍
HTTP APIs 不支持:
- API Key
- 使用计划
- 请求校验
- 响应缓存
- 使用 AWS X-Ray 的跟踪
VTL 负载转换
仅支持:
WebSocket APIs
- 客户端与服务器双向通信。
- 连接保持打开,不同于 REST 与 HTTP APIs。
- 服务器可向已连接客户端推送数据。
API Gateway 对 WebSocket API 的支持
- 负载数据转换。
- 请求校验。
- 特殊内置路由:
$connect:客户端建立连接
$disconnect:客户端断开连接
$default:未匹配到路由
API 缓存
- 缓存响应可减轻后端负载。
- 提升 API 性能。
- 典型场景:
- 高频请求数据
- 读取密集型 API
- 减少 Lambda 调用
API 缓存
- 缓存响应会在可配置的 TTL 后过期。
- 管理陈旧数据的方法:
API 设计最佳实践:清晰的资源命名
- 路径应表示资源,而非动作。
- 用名词,不用动词。
- 推荐:
- 避免:
API 设计最佳实践:版本管理
- 通过版本化让 API 随时间安全演进。
- 避免影响现有客户端。
- 常见方式:
- URI 版本:
GET /v1/orders
- 查询参数:
GET /orders?version=1
- HTTP 头:
Accept-Version: v1
API 开发者门户
- 通过门户网站发布与共享 REST API。
- 为 API 使用方提供文档。
- 关键特性:
- API 文档(Swagger 文件)
- 使用方接入
- SDK 下载
- API Key 注册与订阅流程
OpenAPI 规范
- OpenAPI(Swagger):描述 REST API 的标准方式。
- API Gateway 可导入与导出 OpenAPI 规范。
Preparing Video For Download...