亚马逊AWS官方博客

使用 AWS 同步路由以跨路由表同步路由,这是一个无服务器的开源项目

如果您的网络架构在您的 Amazon Virtual Private Cloud (VPC) 中包含多个路由表,并且您一直在寻找一种自动化解决方案来同步路由表中的路由目标更新,请查看 AWS 同步路由项目。或者,如果您只想找到一个可随时部署的无服务器基础设施即代码项目,那么 AWS 同步路由项目也可以提供帮助。

此项目使用 AWS Amplify 框架进行构建,因为该框架提供了一种直观的方式来组织 AWS CloudFormation 模板和其他代码。Amplify CLI 还为团队提供了一种标准化的方法,可通过几个简单的命令来部署和管理生命周期。如果您想马上获得实践经验,请查看该文档,其中包含了有关前提条件和入门方法的详细信息。

Web 请求路由同步的数据流示例
图 1:Web 请求路由同步的数据流示例。

工作原理

部署 AWS 同步路由后,所有组件将在 AWS 控制台中可见,但解决方案将一直处于空闲状态,直到通过 Web 请求区域 Amazon API Gateway REST API 实例触发(例如通过监控事件操作或轮询客户端,如 aws-sync-routes-client.sh)。

Web 请求必须包含用于简单的单个请求身份验证机制以及请求限制的 API 令牌。此外,请求验证模型用于强制执行对请求正文的严格的第一层输入验证。如果请求通过初始验证,则 API 网关将使用授予完成请求所需最低权限的 AWS Identity and Access Management (IAM) 策略,以执行 AWS Lambda 函数。

然后,Lambda 函数通过 URI 路径中提供的标识符检索 VPC 的主路由表/默认路由表,如果有效,则通过请求正文中包含的 IPv4 CIDR 块选择路由。匹配的路由经过验证,以确保其在主路由表中处于活动状态,该路由具有弹性网络接口 (ENI) 目标,并且既不是本地路由,也不是传播路由。如果所有测试均已通过,则会异步添加或更新自定义路由表中的路由(如有必要),并且会向 Amazon Simple Notification Service (SNS) 主题发布更改通知。如果您要接收警报,您可以订阅该主题。

总之,执行该解决方案通常需要 1 到 3 秒钟时间。在迄今为止的一个客户成功案例中,这被用于在四秒内跨四个自定义路由表(104 个并发路由同步)同步 26 条生产路由。这满足了客户在关键任务型应用程序超时 15 秒之前完成所有路由同步的要求,并允许其完成关键维护窗口。

此解决方案设计简单,可达到预期结果,但如果您想要修改任何功能,这也完全可行。您能够自定义解决方案以最符合您的需求,这是将项目作为开源发布的一个原因。许多客户已讨论和实施的一些想法包括:使用私有 API 网关实例而不是区域实例,增强身份验证过程,以及集成 AWS Web Application Firewall (WAF) 以过滤不需要的请求。

要考虑的后续步骤

  • 立即部署 AWS 同步路由,开始在 VPC 中的路由表之间同步路由。
  • 请查看该文档以了解前提条件和入门方法。
  • 通过提交 pull 请求,帮助改进此开源项目。
  • 使用 Amplify 框架构建您自己的无服务器基础设施即代码解决方案。