VPC究竟是如何使用的

How exactly is a VPC used

我了解VPC的主要概念和高层架构。据我了解,VPC 主要用于较低级别的网络详细信息。这主要用于 ec2 实例。我知道 ec2 实例是 IAAS。

我的问题是如何将 VPC 与 PAAS 或 FAAS 等其他资源一起使用。在 VPC 中拥有 RDS、EB、Lambda 等资源与不在 VPC 中有什么区别?如果这些资源在 VPC 中使用,它们是否通过 ec2 实例显示?还是将它放在 VPC 中的主要目的是能够控制该资源的网络详细信息?

如您所知,VPC 是完全私有的虚拟网络服务。在此专用网络中,您将能够创建子网并根据需要组织它们,例如拥有一些可以具有 public IP 地址的网络(例如前端服务),以及其他完全私有的网络(RDS for例如)。

现在,public 子网仅称为 public,因为它连接到称为 Internet 网关的 AWS 资源,因此您的 public IP 将被路由。这意味着即使您在未连接(通过路由 table)到互联网网关的子网中的 EC2 实例上有一个 public IP,您也将无法连接到互联网。

如果您希望私有子网中的实例能够与世界其他地方通信,则必须添加一个 AWS NAT 网关来为您进行数据包转换(最简单的方法)。

现在拥有 VPC 的意义在于拥有堆栈中正在进行的数据,例如,您不希望关键数据库和后端服务暴露在互联网上,即使您可以使用安全组保护它们.

VPC 中的 lambda 函数将是一种资源,在您指定的子网中执行期间将提供给网络接口 (ENI)。这将允许您连接到未暴露给 Internet 的资源(RDS、Elasticache 等)

如果您不需要访问留在 VPC 内部的私有资源,通常您会希望在 VPC 外部不使用 lambda。

VPC 是物理网络的虚拟化版本

想想你的家庭网络。您家中的每台设备都需要物理连接到您的路由器,或者通过 wifi 连接到路由器。让我们暂时忽略 wifi。

如果您家中的两台设备想要相互通信,它们需要连接到同一网络。您无法连接到邻居的设备,因为它们在不同的网络上。

您的路由器还可以连接到互联网,允许设备访问您家外的计算机。

VPC也是如此。任何希望相互通信的资源(例如 EC2、RDS)需要在同一个 VPC 上。如果 VPC 通过 Internet 网关连接到 Internet,它们还可以与任何可通过 Internet 访问的内容进行通信。

  • Amazon EC2 实例 始终连接到 VPC。 (有一个旧版本叫做 EC2-Classic,但我们忽略它)
  • AWS Elastic Beanstalk 部署了 Amazon EC2 实例,因此它们也连接到 VPC。
  • Amazon RDS 实例 使用 EC2 "behind the scenes",因此它们始终连接到 VPC。
  • AWS Lambda 函数 可选择连接到 VPC。如果他们没有连接到VPC,那么他们可以直接访问互联网。如果它们 连接到 VPC,则它们只能访问 VPC 内的资源 — 需要 NAT 网关才能使函数访问 Internet。
  • Amazon S3 是一项始终 运行 且始终可从 Internet 访问的 Web 服务。你可以 'use' 它,但你不能 'create' 它。因此,它不会连接到 VPC。要使用它,VPC 上的资源(例如 EC2 实例)需要能够访问 Internet,或者使用从 VPC 直接连接到 S3 的 "VPC Endpoint"。

VPC 纯粹用于为资源提供 "physical" 连接,就像它们插入同一路由器一样。它不授予资源本身内的访问权限。把它想象成你把你的笔记本电脑插入我的家庭网络——它不会授予我访问你的笔记本电脑的权限,除非你已经将你的笔记本电脑配置为允许访问(例如磁盘共享)。