
亚马逊云科技最近为 Amazon API Gateway 推出了一项新功能,支持为自定义域名配置动态路由规则,允许用户根据 HTTP 请求头的值(单独使用或与 URL 路径结合)来路由 API 请求。
此前,依赖 API Gateway 进行动态路由的开发人员通常会使用不同的 URL 路径(例如 /v1/products
和 /v2/products
)来分段流量。尽管这种方法能够实现需要的功能,但往往会带来复杂的 URL 结构以及 API 端点数量的增加。然而,借助新的动态路由规则功能,用户可以直接在自定义域名设置中进行路由决策,通过简单配置自定义域名,即可基于传入的 HTTP 请求头、基础路径或两者的组合来做出路由决策。
此外,借助这一功能,用户无需更改或创建新的路径即可完成 API 版本之间的过渡,为 API 版本管理 和 A/B 测试 提供了更顺畅的路径。此外,它还支持基于主机名、租户 ID 甚至 Cookie 值等标准的动态后端选择,无需额外的代理层即可实现对 API 流量的精细控制。

(来源:AWS Compute 博客文章)
本质上,API Gateway 路由规则是一种与自定义域名绑定的特定资源,用于定义如何转发传入的请求。每条规则由三个关键属性组成:条件(Conditions),最多可基于两个请求头和一个基础路径值来指定匹配标准(支持通配符,可实现灵活匹配,同时满足所有条件);动作(Actions),定义匹配时要调用的 API 阶段;以及优先级(Priority),决定规则的评估顺序。例如,请求头条件(如 x-version
)可以使用通配符(如 *v2*
)来匹配 x-version=alpha-v2-latest
或 x-version=beta-v2-test
,从而实现复杂的路由策略。
在创建路由规则之前,用户需要至少有一个 API、一个阶段和一个自定义域名。共有三种路由模式可供选择:“仅 API 映射”(API mappings only),仅使用基础路径映射,不使用路由规则;“路由规则优先,然后是 API 映射”(Routing rules then API mappings),路由规则优先,未匹配的请求回退到基础路径映射;以及“仅路由规则”(Routing rules only),这是推荐的模式,完全依赖于路由规则,适合新域名或从 API 映射过渡后使用。在切换到生产环境之前,建议始终在非生产环境中测试新配置,因为已有的映射将被覆盖。
尽管其他主要云 API 管理平台(如 Azure API Management 和 Google Apigee)也提供了用于 API 版本管理和 A/B 测试的动态路由功能,但它们的实现通常依赖于策略表达式或代理级配置。Amazon API Gateway 通过在自定义域名级别直接提供专用的声明式路由规则资源,极大地简化了这些特定路由场景的配置流程。
此外,API Gateway 的访问日志为请求处理提供了高度的可见性。每个请求都包含了上下文变量,例如 $context.customDomain.routingRuleIdMatched
用于指示匹配的规则。其他变量(如 $context.domainName
、$context.apiId
和 $context.stage
)提供了完整的路由上下文信息。用户可以通过分析这些详细的日志验证路由行为、排查问题,并深入了解不同 API 版本或测试变体之间的流量模式。
在 Medium 的一篇博文中,软件工程师 Paul Issack Minoltan 总结道:
本质上,API Gateway 新引入的路由规则使你能够将复杂的路由逻辑直接嵌入到 API Gateway 配置中,简化了架构,并提供提供更强大的对 API 流量导向的控制能力。
更多详细信息可以在服务文档中找到,该功能的端到端示例可在 GitHub 上找到。
【声明:本文由 InfoQ 翻译,未经许可禁止转载。】
查看英文原文:https://www.infoq.com/news/2025/06/aws-api-gateway-dynamic-routing/
评论