Amazon API Gateway

创建、发布和管理 REST API、HTTP API、WebSocket API 的全托管服务,作为 Lambda 和其他 AWS 服务的前端入口

概述

Amazon API Gateway 是一项用于创建、发布、维护、监控和保护任意规模 API 的全托管服务。支持 REST API、HTTP API、WebSocket API 三种类型,可将 Lambda 函数、EC2 实例和任意 HTTP 端点作为后端连接。全面提供 API 密钥管理、使用量计划、限流、请求/响应转换、通过 Cognito 或 IAM 进行认证授权、自定义域名设置等 API 管理所需功能。HTTP API 比 REST API 成本更低(约便宜 70%)且延迟更低,适合简单的 API 代理。WebSocket API 支持实时双向通信,可用于构建聊天应用和实时仪表板。

REST API 与 HTTP API 的选择标准

API Gateway 提供 REST API 和 HTTP API 两种基于 HTTP 的 API 类型,根据需求进行选择。REST API 具备请求/响应转换(映射模板)、通过 API 密钥和使用量计划进行访问控制、请求验证、缓存功能、WAF 集成、金丝雀发布等高级功能,适合企业级 API 或需要复杂请求转换的场景。HTTP API 省略了部分高级功能,但价格仅为 REST API 的约 30%(每百万请求约 1.29 美元 vs 约 4.25 美元),延迟也更低。原生支持 JWT 授权器、CORS 自动配置、OpenID Connect / OAuth 2.0 集成,作为 Lambda 或 HTTP 后端的简单代理具备充分功能。Azure API Management 是包含开发者门户和 API 生命周期管理的综合平台,而 API Gateway 专注于作为无服务器架构入口与 Lambda 的集成,其特点是不使用时成本为零的完全按量计费。

认证授权与限流设计

API Gateway 的认证授权机制因 API 类型而异。REST API 可选择 Cognito 授权器、Lambda 授权器(基于令牌/基于请求)、IAM 认证三种方式。HTTP API 原生支持 JWT 授权器,可直接验证 Cognito 或 Auth0 等 OIDC 提供商的令牌,省去编写 Lambda 授权器的工作。限流设置可在账户级别(默认 10,000 rps)和阶段/方法级别两层配置,防止后端过载。结合使用量计划和 API 密钥,可为每个外部合作伙伴设置请求上限并监控 API 使用情况。相关书籍 (Amazon) 也可作为参考。

阶段管理与金丝雀发布

API Gateway 的阶段功能是并行运营同一 API 多个版本的机制。利用阶段变量可为 dev/staging/prod 各环境指定不同的 Lambda 函数或后端 URL,只需切换部署即可完成环境间的升级。REST API 支持金丝雀发布,可将新版本的流量从 10% 开始逐步增加,同时通过 CloudWatch 指标监控错误率和延迟,发现问题时立即回滚。结合自定义域名和 ACM 证书,可提供 api.example.com 这样符合品牌的 API 端点,通过基础路径映射还可将多个 API 聚合到一个域名下。WebSocket API 支持实时双向通信,可用于构建聊天应用和实时仪表板。

共有するXB!