4. 接口端点与网关端点对比

在 AWS 的私网接入体系中,VPC Endpoint 分为两大类:Gateway Endpoint(网关端点)和 Interface Endpoint(接口端点)。它们都能让流量不经过 Internet Gateway 或 NAT 网关,但底层实现、支持的服务范围、计费方式和安全控制手段差异很大。理解这些差异,是做出正确选型的前提。

一、底层实现差异

Gateway Endpoint 本质上是路由表中的一个目标条目。创建后,AWS 会在 VPC 路由表中插入一条以 pl-xxxxxxxx(前缀列表)为目标的路由,指向该网关端点。子网内的实例访问对应服务时,流量按路由表被引导到端点,整个过程不涉及弹性网卡(ENI),也不占用子网 IP 地址。

Interface Endpoint 则是在指定子网中创建的一块弹性网卡,拥有一个私有 IP 地址,并绑定安全组。它基于 AWS PrivateLink 实现,本质上是把服务以“私有 IP + DNS 名称”的形式暴露在 VPC 内部。因此它需要占用子网 IP、受安全组和 NACL 约束,也支持从本地数据中心通过 VPN 或 Direct Connect 访问。

二、支持的服务范围

Gateway Endpoint 只支持两种服务:Amazon S3 和 DynamoDB。这是它最大的限制,也是它至今仍被广泛使用的原因——因为这两种服务恰恰是访问量最大、最需要避免走公网的对象存储与 NoSQL 服务。

Interface Endpoint 支持的服务范围要广得多,涵盖绝大多数 AWS 服务,例如 SQS、SNS、Kinesis、ECR、Secrets Manager、Systems Manager、CloudWatch Logs、KMS、API Gateway 等,同时也支持自建服务通过 NLB 发布为 PrivateLink 服务供其他 VPC 或账号消费。可以说,除了 S3 和 DynamoDB 之外,几乎所有需要私网访问的场景都依赖 Interface Endpoint。

三、核心差异对比

对比维度 Gateway Endpoint Interface Endpoint
支持服务 仅 S3、DynamoDB 绝大多数 AWS 服务及自建 PrivateLink 服务
实现方式 路由表前缀列表条目 子网内 ENI + 私有 IP
是否占用 IP 否 是,每个子网一块 ENI
安全控制 端点策略 + 路由表 安全组 + 端点策略 + NACL
计费 免费 按小时 + 按流量计费
本地访问 不支持 支持 VPN / Direct Connect
跨区域访问 不支持 不支持(需同区域)

四、安全控制手段的差异

Gateway Endpoint 的安全控制主要依靠端点策略(Endpoint Policy)。端点策略是一段 IAM 风格的 JSON,用于限制通过该端点可以访问哪些 S3 桶或 DynamoDB 表。例如,可以只允许访问特定账号下的特定桶,从而防止数据被意外导出到其他账号。由于没有安全组,控制粒度相对粗一些,但配合桶策略和 IAM 策略已经足够。

Interface Endpoint 除了端点策略外,还可以绑定安全组,从而在端口和源 IP 层面做更细的控制。例如,只允许应用子网的安全组访问 443 端口,其他子网一律拒绝。这种“安全组 + 端点策略”的双层控制,是 Interface Endpoint 在合规场景中更受青睐的原因之一。

五、选型方法

选型可以按以下判断顺序进行:

  1. 目标服务是否为 S3 或 DynamoDB?如果是,优先考虑 Gateway Endpoint,因为它免费且无需占用 IP,性能也足够。
  2. 是否需要从本地数据中心访问?如果需要,必须使用 Interface Endpoint,因为 Gateway Endpoint 不支持 VPN 和 Direct Connect。
  3. 是否需要安全组级别的细粒度控制?如果合规要求必须使用安全组,则选择 Interface Endpoint。
  4. 是否对成本敏感且服务为 S3/DynamoDB?Gateway Endpoint 免费,Interface Endpoint 会产生小时费和流量费,成本差异明显。
  5. 是否为其他 AWS 服务或自建服务?只能选择 Interface Endpoint。
在实际项目中,S3 和 DynamoDB 通常同时创建 Gateway Endpoint(免费、覆盖大部分流量),而其他服务按需创建 Interface Endpoint。两者并不互斥,可以共存于同一个 VPC。

六、典型场景与限制

场景一:EC2 访问 S3 存储桶。使用 Gateway Endpoint,路由表自动引导流量,无需 NAT 网关,节省 NAT 数据处理费用。限制是只能从 VPC 内部访问,本地数据中心无法通过该端点访问 S3。

场景二:Lambda 访问 Secrets Manager。Lambda 在 VPC 内运行时,需要 Interface Endpoint 才能私网访问 Secrets Manager。此时需要为 Lambda 所在子网创建端点 ENI,并确保安全组允许 443 出站。

场景三:混合云访问 SQS。本地数据中心通过 Direct Connect 连接到 VPC,需要访问 SQS。此时必须使用 Interface Endpoint,并在本地 DNS 中解析到端点 ENI 的私有 IP。

需要特别注意的限制包括:Gateway Endpoint 不支持跨区域访问,也不支持从对等连接的另一端 VPC 直接使用(除非在对端 VPC 也创建端点);Interface Endpoint 每个可用区需要一块 ENI,若子网 IP 紧张需提前规划,且端点本身有每小时费用,大量服务全部开启 Interface Endpoint 会显著增加成本。

Gateway Endpoint 与 Interface Endpoint 选型决策图 需要私网访问 AWS 服务 服务是 S3 或 DynamoDB? 是 Gateway Endpoint 免费 · 路由表 · 不占 IP 否 需要本地数据中心访问 或安全组细粒度控制? 是 Interface Endpoint ENI · 安全组 · 计费 否 是否为其他 AWS 服务 或自建 PrivateLink 服务? 是 Interface Endpoint 唯一可行方案 否 重新评估需求 确认服务与网络路径 提示:Gateway Endpoint 与 Interface Endpoint 可共存;S3/DynamoDB 建议优先 Gateway,其余服务按需 Interface

七、选型检查清单

在最终决定前,可以用下面这份清单快速核对:

  • 目标服务是否在 Gateway Endpoint 支持列表内(仅 S3、DynamoDB)?
  • 访问来源是否包含本地数据中心或对等 VPC?
  • 是否必须使用安全组进行源/端口控制?
  • 子网剩余 IP 是否足够为每个可用区分配端点 ENI?
  • 是否已评估 Interface Endpoint 的小时费与流量费对预算的影响?
  • DNS 解析是否需要启用私有 DNS,以便使用标准服务域名?
  • 端点策略是否已按最小权限原则限制可访问的资源?

综合来看,Gateway Endpoint 适合“S3/DynamoDB + 纯 VPC 内访问 + 成本敏感”的组合;Interface Endpoint 适合“非 S3/DynamoDB 服务 + 混合云或细粒度安全控制 + 可接受计费”的组合。两者不是替代关系,而是互补关系,实际架构中往往同时使用。