深入了解 VPC 端点类型 – 网关与接口
什么是VPC 端点
VPC 端点(VPC Endpoint)是 Amazon Web Services (AWS) 提供的一种服务,允许用户在 Virtual Private Cloud (VPC) 内部安全地访问 AWS 服务,而无需通过公共互联网。VPC 端点通过私有连接将 VPC 与 AWS 服务直接连接,确保数据在传输过程中不会暴露在公共网络中。
VPC 端点分为两种类型:接口端点(Interface Endpoint) 和 网关端点(Gateway Endpoint)。接口端点基于 AWS PrivateLink 技术,适用于大多数 AWS 服务,而网关端点则专门用于 Amazon S3 和 DynamoDB 服务。
VPC 端点的用途:
VPC 端点主要用于在 VPC 内部与 AWS 服务之间建立私有连接,从而避免通过公共互联网访问这些服务。以下是 VPC 端点的具体作用:
1. 增强安全性
通过 VPC 端点,用户可以在 VPC 内部直接访问 AWS 服务,而无需将流量路由到公共互联网。这种方式减少了数据在传输过程中被拦截或篡改的风险,提高了数据的安全性。
2. 简化网络架构
使用 VPC 端点后,用户无需配置 NAT 网关、互联网网关或 VPN 连接来访问 AWS 服务。这简化了网络架构,降低了网络管理的复杂性。
3. 提高性能
由于 VPC 端点通过私有网络连接 AWS 服务,减少了网络延迟,提高了数据传输的速度和效率。这对于需要低延迟和高吞吐量的应用场景尤为重要。
4. 降低成本
通过 VPC 端点访问 AWS 服务,用户无需为通过互联网传输的数据支付额外的费用。这有助于降低网络传输成本,尤其是在大规模数据传输的场景中。
网关类型 VPC 端点
-
网关类型 VPC 端点的定义
网关端点专门用于 Amazon S3 和 DynamoDB 服务。网关端点在 VPC 中创建一个虚拟设备,并将流量路由到指定的 AWS 服务。与接口端点不同,网关端点不需要在 VPC 中创建 ENI,而是通过路由表将流量直接路由到 AWS 服务。
-
网关类型 VPC 端点的工作原理
网关端点通过在 VPC 中创建一条路由,将流量直接指向目标 AWS 服务。具体工作原理如下:
- 路由表配置:网关端点会自动在 VPC 的路由表中添加一条路由,将目标服务的流量指向该端点。
- 私有连接:流量通过 AWS 内部网络传输,不会经过公共互联网,确保数据的安全性和低延迟。
- 策略控制:可以通过端点策略限制哪些资源可以访问目标服务,进一步增强安全性。
接口类型 VPC 端点
-
接口类型 VPC 端点的定义
接口类型 VPC 端点是一种 AWS 服务,允许在虚拟私有云(VPC)中通过私有 IP 地址直接访问 AWS 服务,而无需通过公共互联网。它通过将 AWS 服务暴露为网络接口(ENI)来实现,这些接口可以直接附加到 VPC 中的子网。
-
接口类型 VPC 端点的工作原理
接口类型 VPC 端点通过在 VPC 中创建一个弹性网络接口(ENI)来工作。这个 ENI 充当 AWS 服务的入口点,允许 VPC 中的资源通过私有 IP 地址直接访问该服务。所有流量都在 AWS 网络内部传输,不会暴露在公共互联网上,从而提高了安全性和性能。
网关与接口类型 VPC 端点的比较
您可能已经从前面几节的描述和图表中了解到,VPC 接口端点和网关端点之间存在差异。现在,让我们更详细地了解一下这些差异。
子网级别 vs VPC 级别
VPC 接口端点是在子网级别创建的。创建新的 VPC 接口端点时,您可以选择一个或多个子网(每个可用区一个)来创建接口端点。
一个接口端点可以代表一个或多个具有私有 IP 地址的网络接口,作为到所选服务的流量入口点
在上图中,您可以看到我们创建了一个 VPC 接口终端节点,用于访问位于两个私有子网(每个子网位于不同的可用区)中的私有 API 网关终端节点。每个子网都有一个网络接口,该接口具有特定的私有 IP 地址作为流量入口点。通过在多个可用区中创建 VPC 接口终端节点,您可以确保应用程序的高可用性;即使其中一个可用区出现故障,另一个终端节点仍然可用。
同时,VPC 网关终端节点是在 VPC 级别创建的。与接口终端节点相比,您无需指定特定的子网,只需选择一个 VPC 即可。
支持多种 AWS 托管服务和第三方服务,而非仅支持 S3 和 DynamoDB
如前所述,VPC 接口端点支持多种不同的服务:
- AWS 托管服务(例如 API 网关、CloudWatch、SQS、SNS 等)。
- 由其他 AWS 账户托管为 VPC 端点服务的提供商服务。
- 来自 AWS Marketplace 合作伙伴的第三方服务。
但是,网关端点仅支持 DynamoDB 和 S3 服务。
这意味着,每当您需要与非 DynamoDB 或 S3 的服务建立私有连接时,VPC 接口端点就是最佳选择。 比如Kafka 或者RDS。
安全组支持 vs 不支持安全组
VPC 接口终端节点支持安全组,用于控制允许流入终端节点网络接口的流量。
VPC 网关终端节点不支持安全组。
但是,网关和接口终端节点都支持设置终端节点策略(并非所有 AWS 服务都支持终端节点策略),该策略本质上充当了额外的控制层,通过指定允许通过特定 VPC 终端节点对哪些资源执行哪些操作。
跨区域和本地访问 vs 仅限 VPC 访问
VPC 网关终端节点设计用于在其创建的 VPC 内使用。
然而,接口终端节点设计用于从其他 VPC、跨区域和本地访问。
额外费用 vs 免费
对于 VPC 网关端点,无需支付额外使用费或数据处理费。但是,所有标准 S3 或 DynamoDB 定价仍然适用。
但是,接口端点的使用并非免费,其定价包含:
每个可用区每个接口端点的价格:每小时 0.01 美元。
数据处理费:每 GB 0.01 美元。
对应用代码的影响
- 无需更改代码:VPC 网关端点(适用于 S3 和 DynamoDB)——应用程序可以继续使用相同的 URL,AWS 基础设施负责处理路由。
- 需要更改代码:VPC 接口端点——路由可能涉及不同的端点,这可能需要更新您的应用程序代码或配置。
何时使用?
当您需要在同一区域内从连接网关端点的同一 VPC 私下访问 S3 或 DynamoDB 时,请使用 VPC 网关端点。这种方法经济高效,并确保在 VPC 与 S3 或 DynamoDB 之间传输的数据不会离开 AWS 网络。
在以下情况下使用 VPC 接口端点:
- 您需要私下访问 AWS 托管服务(S3 或 DynamoDB 除外)、来自其他 AWS 账户的 VPC 端点服务或来自 AWS Marketplace 合作伙伴的服务。
- 您必须使 VPC 接口端点(包括 S3 和 DynamoDB)可供其他 VPC、不同区域或本地使用。
请记住,使用 VPC 对等连接或 Transit Gateway 连接访问其他 VPC 中的 VPC 接口端点时,会产生额外的数据传输和使用成本。这些成本是在标准接口端点成本之外的。因此,我建议您明智地设计您的 AWS 网络架构。