Amazon API Gateway 设计模式 - REST API 与 HTTP API 的选型标准

明确 HTTP API 与 REST API 的选型标准,介绍 Cognito 和 Lambda Authorizer 的认证模式以及限流设计的实践方法。

REST API 与 HTTP API 的选型标准

API Gateway 提供 REST API 和 HTTP API 两种类型。HTTP API 是 2019 年推出的新类型,覆盖了 REST API 的主要功能,同时价格最多便宜 71%,延迟也更低。如果主要用途是代理 Lambda 函数或 HTTP 端点,应选择 HTTP API。需要选择 REST API 的场景包括:通过 API 密钥和使用量计划向第三方公开 API、请求/响应转换(映射模板)、与 WAF 集成、边缘优化端点、请求验证功能。新项目建议默认使用 HTTP API,仅在需要 HTTP API 不具备的功能时才考虑 REST API。

认证与授权模式

API Gateway 支持多种认证方式。Cognito 用户池 Authorizer 是由 API Gateway 自动验证 Cognito 签发的 JWT 令牌的方式,无需自行实现令牌验证逻辑,是最便捷的认证引入方式。Lambda Authorizer 是通过 Lambda 函数实现自定义认证逻辑的方式,适用于自定义令牌格式、与外部 IdP 集成、基于 IP 地址的控制等需要灵活授权逻辑的场景。Lambda Authorizer 的结果可缓存,设置 TTL 可减少重复的认证请求。IAM 认证使用 AWS SigV4 签名验证请求,适用于 AWS 服务间的内部通信。

限流与使用量计划

API Gateway 的限流基于令牌桶算法实现。账户级别的默认上限为每区域 10,000 请求/秒,突发为 5,000 请求。可在阶段级别和方法级别设置更细粒度的限制,防止特定端点使后端过载。使用量计划是 REST API 特有的功能,可为每个 API 密钥设置每日和每月的请求上限及限流速率。向外部合作伙伴公开 API 时,可为不同合作伙伴应用不同的速率限制。收到 429 Too Many Requests 响应的客户端,建议实现指数退避重试。 如需全面学习 API 设计架构,请参考技术书籍 (Amazon)

API Gateway 定价

HTTP API 每百万请求约 1.00 美元,与 REST API 的 3.50 美元相比便宜约 71%。WebSocket API 每百万消息约 1.00 美元,加上连接时间计费(每百万分钟约 0.25 美元)。启用 REST API 缓存后,按缓存内存大小按时计费(0.5 GB 约 0.02 美元/小时)。合理设置 Lambda Authorizer 的缓存 TTL,减少认证请求的 Lambda 调用次数,也是成本优化的有效手段。免费额度在前 12 个月内,HTTP API 和 REST API 各包含每月 100 万请求。

总结

API Gateway 作为无服务器架构的入口,在 API 层统一管理认证、限流和监控。以 HTTP API 作为默认选择,在需要企业级功能时选择 REST API,通过这一判断标准可以优化成本和延迟。