VPC 终端节点服务 (AWS PrivateLink) - Amazon Virtual Private Cloud
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

VPC 终端节点服务 (AWS PrivateLink)

您可以在 VPC 中创建自己的应用程序并将其配置为 AWS PrivateLink 支持的服务(也称作终端节点服务)。其他 AWS 委托人可以使用接口 VPC 终端节点,在他们的 VPC 和您的终端节点服务之间创建连接。您是服务提供商,而创建与您的服务之间的连接的 AWS 委托人是服务使用者

概述

以下是创建终端节点服务的一般步骤。

  1. 在您的 VPC 中为应用程序创建一个网络负载均衡器,并针对提供服务的每个子网(可用区)对它进行配置。负载均衡器接收来自服务使用者的请求并将请求路由到您的服务。有关更多信息,请参阅 Network Load Balancer 用户指南 中的 Network Load Balancer 入门。我们建议您在区域内的所有可用区中配置您的服务。

  2. 创建 VPC 终端节点服务配置并指定网络负载均衡器。

以下是一些常规步骤,通过这些步骤,服务使用者能够连接到您的服务。

  1. 向特定服务用户(AWS 账户、IAM 用户和 IAM 角色)授予权限,允许他们创建与您的终端节点服务之间的连接。

  2. 已被授予权限的服务使用者可创建与您的服务连接的接口终端节点(可选择在您已配置服务的每个可用区中创建)。

  3. 要激活连接,请接受接口终端节点连接请求。默认情况下,必须手动接受连接请求。不过,您可以配置终端节点服务的接受设置,以便自动接受所有连接请求。

权限和接受设置的组合可帮助您控制哪些服务使用者(AWS 委托人)可以访问您的服务。例如,可以为您信任的选定委托人授予权限,并自动接受所有连接请求;您还可以为范围更广的委托人组授予权限,并手动接受您信任的特定连接请求。

在下图中,VPC B 的账户所有者是一个服务提供商并且有一项服务正在子网 B 的实例上运行。VPC B 的所有者具有一个服务终端节点 (vpce-svc-1234),该节点已关联指向子网 B 中作为目标的实例的网络负载均衡器。VPC A 的子网 A 中的实例使用接口终端节点访问子网 B 中的服务。


                使用接口终端节点访问终端节点服务

为实现低延迟和容错能力,建议使用网络负载均衡器,其目标位于 AWS 区域的每个可用区中。要帮助使用区域 DNS 主机名访问服务的服务使用者实现高可用性,可以启用跨区域负载均衡。借助跨区域负载均衡,负载均衡器将在所有启用可用区中的已注册目标之间分配流量。有关更多信息,请参阅Network Load Balancer 用户指南 中的跨区域负载均衡。启用跨区域负载均衡后,可能向账户收取区域数据传输费用。

在下图中,VPC B 的所有者是服务提供商并且已配置目标位于两个不同可用区中的 网络负载均衡器。服务使用者 (VPC A) 已在其 VPC 中相同的两个可用区中创建了接口终端节点。来自 VPC A 中实例对服务的请求可使用任一接口终端节点。


                使用接口终端节点访问终端节点服务

有关配置服务并允许服务使用者通过 VPC 对等连接访问服务的示例,请参阅示例:使用 AWS PrivateLink 和 VPC 对等连接的服务

终端节点服务可用区注意事项

创建终端节点服务时,将在映射至您的账户且独立于其他账户的可用区中创建此服务。当服务提供商与使用者处于不同的账户中时,请使用可用区 ID 唯一且一致地识别终端节点可用区。例如,use1-az1us-east-1 区域的 AZ ID,它映射至每个 AWS 账户中的相同位置。有关可用区 ID 的信息,请参阅 AWS RAM 用户指南 中的您的资源的 AZ ID 或使用 describe-availability-zones

当服务提供商和使用者具有不同的账户并使用多个可用区,并且使用者查看 VPC 终端节点服务信息时,响应仅包括公共可用区。例如,当服务提供商账户使用 us-east-1aus-east-1c 而使用者使用 us-east-1aus-east-1b 时,响应包括公共可用区 us-east-1a 中的 VPC 终端节点服务。

终端节点服务 DNS 名称

当您创建 VPC 终端节点服务时,AWS 将生成您可用于与服务通信的终端节点特定的 DNS 主机名。这些名称包括 VPC 终端节点 ID、可用区名称以及 区域名称,例如,vpce-1234-abcdev-us-east-1.vpce-svc-123345.us-east-1.vpce.amazonaws.com。默认情况下,您的使用者使用该 DNS 名称访问服务,通常需要修改应用程序配置。

如果终端节点服务适用于 AWS 服务或 AWS Marketplace 中可用的服务,则存在默认 DNS 名称。对于其他服务,服务提供商可以配置私有 DNS 名称,以便使用者可以使用现有 DNS 名称访问服务,而无需更改其应用程序。有关更多信息,请参阅终端节点服务的私有 DNS 名称

服务提供商可以在 IAM 策略语句中使用 ec2:VpceServicePrivateDnsName 条件上下文密钥来控制可以创建哪些私有 DNS 名称。有关更多信息,请参阅 IAM 用户指南 中的 Amazon EC2 定义的操作

私有 DNS 名称要求

服务提供商可以为新的终端节点服务或现有终端节点服务指定私有 DNS 名称。要使用私有 DNS 名称,请启用该功能,然后指定私有 DNS 名称。在使用者可以使用私有 DNS 名称之前,您必须验证您是否拥有对域/子域的控制权。您可以使用 Amazon VPC 控制台或 API 启动域所有权验证。域所有权验证完成后,使用者通过使用私有 DNS 名称访问终端节点。

连接到本地数据中心

您可以使用以下类型的连接进行接口终端节点与本地数据中心之间的连接:

  • AWS Direct Connect

  • AWS 站点到站点 VPN

通过 VPC 对等连接访问服务

您可以将 VPC 对等连接与 VPC 终端节点结合使用,以允许跨 VPC 对等连接对使用者进行私有访问。有关更多信息,请参阅 示例:使用 AWS PrivateLink 和 VPC 对等连接的服务

对连接信息使用代理协议

网络负载均衡器向您的应用程序(您的服务)提供源 IP 地址。当服务使用者通过接口终端节点将流量发送至您的服务时,向您的应用程序提供的源 IP 地址是网络负载均衡器节点的私有 IP 地址而不是服务使用者的 IP 地址。

如果您需要服务使用者的 IP 地址及其对应的接口终端节点 ID,请在您的负载均衡器上启用代理协议并从代理协议标头中获取客户端 IP 地址。有关更多信息,请参阅Network Load Balancer 用户指南 中的代理协议

终端节点服务限制

要使用终端节点服务,您需要了解当前规则和限制:

  • 终端节点服务仅支持通过 TCP 的 IPv4 流量。

  • 服务使用者可以使用特定于终端节点的 DNS 主机名访问终端节点服务或私有 DNS 名称。

  • 如果终端节点服务与多个 网络负载均衡器 关联,那么对于某个特定的可用区,一个接口终端节点将仅建立一个与负载均衡器的连接。

  • 对于终端节点服务,关联的网络负载均衡器可以支持针对每个唯一目标(IP 地址和端口)的 55000 个并发连接或每分钟约 55000 个连接。如果连接数超过该值,则会增大出现端口分配错误的几率。要修复端口分配错误,请将更多目标添加到目标组。有关网络负载均衡器目标组的信息,请参阅Network Load Balancer 用户指南 中的网络负载均衡器的目标组向您的目标组注册目标。.

  • 您账户中的可用区可能不会映射到与其他账户中的可用区相同的位置。例如,您的可用区 us-east-1a 与其他账户的可用区 us-east-1a 所表示的可能不是同一个位置。有关更多信息,请参阅区域和可用区域概念。配置终端节点服务时,将在映射到您的账户的可用区中配置此服务。

  • 查看终端节点服务的服务特定的限制。

  • 查看终端节点服务的安全最佳实践和示例。有关更多信息,请参阅策略最佳实践使用 VPC 终端节点 控制对服务的访问