AWS VPC Peering 与 PrivateLink 用于对第三方云数据库进行网络访问

AWS VPC Peering 与 PrivateLink 用于对第三方云数据库进行网络访问

这里是 AWS。我有一个简单的应用服务器,它在自动扩展(“目标”)组中的 EC2 实例上运行,该实例由应用程序负载平衡器 (ALB) 提供前端。ALB 的域名在 DNS 中通过 CNAME 映射到我的开发子域,例如dev.myapp.example.com。因此,我可以使用curl、、wgetPostMan 等向其发出 HTTP 请求http://dev.myapp.example.com并从中获取响应,并且这些请求会在位于 ALB 后面(在自动扩展组中)的任何 EC2 实例之间进行负载平衡。

在这些 EC2 实例上运行的应用服务器需要连接到第三方数据库即服务。MyCloudDB为了回答这个问题,我们将其称为云数据库“”。

当我手动配置 EC2 实例并在其中部署我的应用服务器时,为了使其与 通信MyCloudDB,我需要登录MyCloudDBWeb 控制台并使用 /32 子网访问列出 EC2 实例的公共 IP(说实话,不知道为什么在/32 子网上)。例如,如果 AWS 为实例分配了一个公共 IP,例如,1.2.3.4那么我需要登录MyCloudDB并添加访问列表条目1.2.3.4/32。然后,应用服务器(在新的 EC2 实例上运行)才能连接到MyCloudDB

我正在尝试弄清楚如何使此允许/访问列表设置与我的 ALB 及其自动缩放组兼容。显然,自动缩放组中的 EC2 实例是短暂的,将根据我的自动缩放规则启动和拆除。由于我们需要它是动态/弹性的,所以我需要一种方法来告诉MyCloudDB“信任”来自 ALB 后面的 EC2 实例的任何请求。显然,不要过于放松安全性,以免给自己带来麻烦。

提供MyCloudDB3 种类型的网络访问选项:

  • IP 访问列表(我目前正在使用的,独家)
  • VPC 对等连接
    • 这允许我的应用程序 VPC 与MyCloudDBVPC对等
  • 专用终结点Private Endpoint
    • 允许 AWS PrivateLink 连接到MyCloudDB
  • 管理 REST API
    • 允许我通过 RESTful(Web 服务)API 管理 IP 访问列表
    • 因此我可以创建一个 EC2 实例生命周期钩子来运行一个脚本,该脚本通过或其他工具将实例 IP 地址添加到MyCloudDBIP 访问列表中curl

因此,从自动化的角度来看,我实际上有 3 个选项:VPC Peering、私有端点 (PrivateLink) 或 API 调用。我可以分析 API 调用选项的优缺点,但我很难“透过树木看森林“关于 VPC Peering 与 PrivateLink 选项。

A重大呼吁最终,我将使用 CloudFormation 模板来管理此 ALB 在新(临时)环境中的部署。因此,我不仅需要此连接解决方​​案适用于位于 ALB 后面的 EC2 实例,还需要它适用于将通过 CloudFormation 配置的 ALB。

鉴于我的情况、背景和需求,VPC Peering 与 PrivateLink 有哪些优点/缺点?

答案1

这几乎就是 PrivateLink 的初衷。他们实际上将一个网络接口放在您的 VPC 中,然后您可以访问它。在他们的那边,它会到达 NLB,然后进入他们的数据库。这是最低权限,也是我会做的。

VPC 对等连接将您网络的更多部分开放给更多其他网络。如果您的 IP 范围发生冲突,则将变得更加困难。在这种情况下,我看不出有任何优势。

如果 IP 访问列表是唯一的选择,那么您的自动扩展组将需要静态 IP。在每个子网中创建一个 NAT 网关并将其弹性 IP 列入白名单即可实现此目的。

相关内容