Amazon Virtual Private Cloud
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

VPC 终端节点

VPC endpoint可让您在您的 VPC 和其他 AWS 服务之间创建私有连接,而无需通过 Internet、NAT 设备、VPN 连接或 AWS Direct Connect 进行访问。终端节点是虚拟设备。这些是水平扩展、冗余且具备高可用性的 VPC 组件,使用这些组件可以在 VPC 与 AWS 服务中的实例之间进行通信,而不会对网络流量造成可用性风险或带宽限制。

重要

目前,我们仅支持带 Amazon S3 和 DynamoDB 的连接终端节点。

终端节点使 VPC 中的实例能够使用其私有 IP 地址与其他服务中的资源进行通信。您的实例不需要公有 IPv4 地址,并且您的 VPC 中不需要有 Internet 网关、NAT 设备或虚拟专用网关。使用终端节点策略可控制对其他服务中的资源的访问。您的 VPC 和 AWS 服务之间的流量不会脱离 Amazon 网络。

在下图中,子网 2 中的实例可通过 VPC 终端节点访问 Amazon S3。

 使用终端节点访问 Amazon S3

使用终端节点不收取任何额外费用。采用标准的数据传输和资源使用计费方式。有关定价的更多信息,请参阅 Amazon EC2 定价

终端节点基本知识

要创建和设置终端节点,您需执行以下操作:

  1. 指定要在其中创建终端节点的 VPC 以及要连接到的服务。服务由前缀列表 (某个区域的服务的名称和 ID) 标识。前缀列表 ID 使用 pl-xxxxxxx 格式,前缀列表名称使用 com.amazonaws.<region>.<service> 格式。可使用前缀列表名称 (服务名称) 创建终端节点。

  2. 向终端节点附加终端节点策略,该策略允许您对要连接的部分或所有服务进行访问。有关更多信息,请参阅 使用终端节点策略

  3. 指定一个或多个路由表来控制 VPC 与其他服务之间的流量的路由。使用这些路由表的子网可以访问终端节点,随后通过终端节点将来自这些子网中的实例的流量路由到服务。

创建终端节点后,您可以修改已附加到终端节点的终端节点策略,并添加或删除终端节点使用的路由表。

您可以在单个 VPC 中创建多个终端节点 (例如,针对多项服务)。您还可以创建针对单项服务的多个终端节点,并且可以使用不同的路由表来强制执行从不同的子网到同一服务的各种访问策略。

终端节点路由

在创建或修改终端节点时,您将指定用于通过终端节点访问服务的 VPC 路由表。路由会自动添加到每个路由表中,同时会添加一个指定服务的前缀列表 ID 的目的地 (pl-xxxxxxxx) 以及一个具有终端节点 ID 的目标 (vpce-xxxxxxxx);例如:

目标 目标
10.0.0.0/16 本地
pl-1a2b3c4d vpce-11bb22cc

前缀列表 ID 从逻辑上代表服务使用的公有 IP 地址的范围。与指定路由表关联的子网中的所有实例都会自动使用终端节点访问服务;未与指定路由表关联的子网不使用终端节点。这使您能够将其他子网中的资源与您的终端节点分离。

要查看服务的当前公有 IP 地址范围,您可以使用 describe-prefix-lists 命令 中的 AWS IP 地址范围

注意

服务的公有 IP 地址的范围可能会不时更改。在根据服务的当前 IP 地址范围决定路由目标或做其他决策之前,请考虑产生的影响。

以下规则适用:

  • 您可以在一个路由表中拥有针对不同服务的多个终端节点路由,并且可以在不同的路由表中拥有针对同一服务的多个终端节点路由,但不能在一个路由表中拥有针对同一服务的多个终端节点路由。例如,如果您的 VPC 中有两个针对 Amazon S3 的终端节点,则您不能同时对这两个终端节点使用相同的路由表。

  • 您无法通过使用路由表 API 或 VPC 控制台中的路由表页面来在您的路由表中显式添加、修改或删除终端节点路由。您只能通过将路由表与终端节点关联来添加终端节点路由。要更改与终端节点关联的路由表,您可以修改终端节点

  • 在您从终端节点删除路由表关联 (通过修改终端节点) 或删除终端节点时,将自动删除终端节点路由。

我们使用与流量匹配的最明确路由以判断数据流的路由方式 (最长前缀匹配)。如果您的路由表中有针对指向 Internet 网关的所有 Internet 流量 (0.0.0.0/0) 的现有路由,则终端节点路由将优先于目标设定为服务的所有流量,因为服务的 IP 地址范围比 0.0.0.0/0 更明确。所有其他 Internet 流量 (包括目标设定为其他区域内的服务的流量) 将流向 Internet 网关。

不过,如果您有针对指向 Internet 网关或 NAT 设备的 IP 地址范围的现有的、更明确的路由,则这些路由将优先。如果您有目标设定为与服务所使用的 IP 地址范围相同的 IP 地址范围的现有路由,则您的路由将优先。

示例:路由表中的终端节点路由

在此方案中,您的路由表中有一个针对指向 Internet 网关的所有 Internet 流量 (0.0.0.0/0) 的现有路由。来自子网的目标设定为其他 AWS 服务的流量将使用 Internet 网关。

目标 目标
10.0.0.0/16 本地
0.0.0.0/0 igw-1a2b3c4d

创建指向支持的 AWS 服务的终端节点,并将您的路由表与该终端节点关联。将为路由表自动添加一个终端节点路由,其目的地为 pl-1a2b3c4d (假设这表示您已为其创建终端节点的服务)。现在,来自子网的目标设定为同一区域内的 AWS 服务的任何流量将流向该终端节点,而不是流向 Internet 网关。所有其他 Internet 流量 (包括目标设定为其他服务的流量和目标设定为其他区域内的 AWS 服务的流量) 将流向 Internet 网关。

目标 目标
10.0.0.0/16 本地
0.0.0.0/0 igw-1a2b3c4d
pl-1a2b3c4d vpce-11bb22cc

示例:针对终端节点调整路由表

在此方案中,您已将路由表配置为允许子网中的实例通过 Internet 网关与 Amazon S3 存储桶进行通信。您已添加一个目的地为 54.123.165.0/24 (假设这是 Amazon S3 中的当前 IP 地址范围) 且目标为 Internet 网关的路由。然后创建一个终端节点,并将此路由表与该终端节点关联。这会自动将一个终端节点路由添加到路由表。然后使用 describe-prefix-lists 命令查看 Amazon S3 的 IP 地址范围。该范围为 54.123.160.0/19 (它没有指向 Internet 网关的范围那么明确)。这意味着,目标设定为 54.123.165.0/24 IP 地址范围的任何流量将继续使用 Internet 网关,而不使用终端节点 (只要这仍是 Amazon S3 的公有 IP 地址范围)。

目标 目标
10.0.0.0/16 本地
54.123.165.0/24 igw-1a2b3c4d
pl-1a2b3c4d vpce-11bb22cc

要确保通过终端节点来路由目标设定为相同区域内的 Amazon S3 的所有流量,您必须调整路由表中的路由。为此,您可以删除针对 Internet 网关的路由。现在,针对相同区域内的 Amazon S3 的所有流量将使用终端节点,并且与您的路由表关联的子网为私有子网。

目标 目标
10.0.0.0/16 本地
pl-1a2b3c4d vpce-11bb22cc

终端节点限制

要使用终端节点,您需要了解当前限制:

  • 终端节点只支持 IPv4 流量。

  • 您无法在网络 ACL 的出站规则中使用前缀列表 ID 来允许或拒绝至终端节点中所指定服务的出站流量。如果您的网络 ACL 规则限制流量,则必须为服务指定 CIDR 块 (IP 地址范围)。但是,您可在出站安全组规则中使用前缀列表 ID。有关更多信息,请参阅 安全组

  • 仅在同一地区内支持终端节点。无法在 VPC 和其他区域内的 AWS 服务之间创建终端节点。

  • 无法标记终端节点。

  • 无法将终端节点从一个 VPC 转移到另一个 VPC,也无法将终端节点从一项服务转移到另一项服务。

  • 无法将终端节点连接扩展到 VPC 之外。VPC 中的 VPN 连接、VPC 对等连接、AWS Direct Connect 连接或 ClassicLink 连接的另一端的资源不能使用终端节点与终端节点服务中的资源进行通信。

  • 您必须在您的 VPC 中启用 DNS 解析,或者,如果您使用自己的 DNS 服务器,请确保将针对所需服务 (如 Amazon S3) 的 DNS 请求正确解析为 AWS 维护的 IP 地址。有关更多信息,请参阅 在您的 VPC 中使用 DNS

有关特定于 Amazon S3 的规则和限制,请参阅 Amazon S3 的终端节点

有关特定于 DynamoDB 的规则和限制,请参阅 Amazon DynamoDB 的终端节点

控制终端节点的使用

默认情况下,IAM 用户无权使用终端节点。您可以创建一个 IAM 用户策略,该策略向用户授予创建、修改、描述和删除终端节点的权限。我们当前不支持对任何 ec2:*VpcEndpoint* API 操作或 ec2:DescribePrefixLists 操作的资源级权限 - 您不能创建 IAM 策略来向用户授予使用特定终端节点或前缀列表的权限。有关更多信息,请参阅以下示例:8. 创建和管理 VPC 终端节点

控制对服务的访问

在创建终端节点时,可为其附加终端节点策略来控制对所连接到的服务的访问。终端节点策略必须采用 JSON 格式编写。

如果您使用针对 Amazon S3 的终端节点,则还可以使用 Amazon S3 存储桶策略来控制从特定终端节点或特定 VPC 对存储桶进行的访问。有关更多信息,请参阅 使用 Amazon S3 存储桶策略

使用终端节点策略

VPC 终端节点策略是一种 IAM 资源策略,该策略在您创建或修改终端节点时可附加到该终端节点。如果您在创建终端节点时不附加策略,我们将为您附加一个默认策略来允许对服务进行完全访问。终端节点策略不会覆盖或取代 IAM 用户策略或服务特定策略 (如 S3 存储桶策略)。它是一个单独策略,用于控制从终端节点对指定服务进行的访问。

您不能将多个策略附加到一个终端节点;但您可以随时修改策略。请注意,如果您修改策略,则所做的更改可能需要几分钟才能生效。有关更多信息,请参阅 修改终端节点。有关编写策略的更多信息,请参阅 IAM 用户指南 中的 IAM 策略概述

您的终端节点策略可与任何 IAM 策略类似;但请注意以下几点:

  • 仅与指定服务相关的策略部分将适用。不能使用终端节点策略来允许 VPC 中的资源执行其他操作;例如,如果您将 EC2 操作添加到针对 Amazon S3 的终端节点的终端节点策略,则这些操作将不会生效。

  • 您的策略必须包含一个 Principal 元素。有关更多信息,请参阅 IAM 用户指南 中的委托人

  • 终端节点策略的大小不得超过 20480 个字符 (包含空格)。

有关终端节点策略示例,请参阅以下主题:

安全组

默认情况下,除非您明确限制出站访问,否则 Amazon VPC 安全组将允许所有出站流量。如果您的安全组的出站规则受到限制,您必须添加一条规则来允许从 VPC 到终端节点中指定的服务的出站流量。为此,您可以在出站规则中使用该服务的前缀列表 ID 作为目的地。有关更多信息,请参阅 修改您的安全组

使用终端节点

您可以使用 Amazon VPC 控制台创建或管理终端节点。

创建终端节点

要创建终端节点,您必须指定要在其中创建终端节点的 VPC 和要连接到的服务。您还可以将策略附加到终端节点,并指定将由终端节点使用的路由表。

创建终端节点

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Endpoints

  3. 选择 Create Endpoint

  4. 在向导的第一步中,完成以下信息,然后选择 Next Step

    • 选择要在其中创建终端节点的 VPC 以及要连接到的服务。

    • 选择策略的类型。您可以保留默认选项 Full Access 来允许对服务进行完全访问。或者,您可以选择 Custom,然后使用 AWS 策略生成器创建自定义策略,或在策略窗口中键入您自己的策略。

  5. 在向导的第二步中,选择将由终端节点使用的路由表。向导会自动向这些表添加一个路由,该路由将目标设定为服务的流量指向终端节点。完成后,选择 Create Endpoint

您可以使用 VPC 向导创建新的 VPC 并创建终端节点。您可以指定将能够访问终端节点的子网,而不是指定终端节点所使用的路由表。向导会将终端节点路由添加到与这些子网关联的路由表。

使用 VPC 向导创建 VPC 和终端节点

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在 Amazon VPC 控制面板上,选择 Start VPC Wizard

  3. 选择满足您需求的 VPC 配置,然后选择 Select。有关配置类型的更多信息,请参阅场景和示例

  4. 在向导的第二页上,按需填写 VPC 设置。选择 Add Endpoint,完成以下信息:

    • 选择要连接的服务。

    • Subnet 列表中选择将有权访问终端节点的子网。与这些子网关联的路由表将包含一个终端节点路由。

    • Policy 列表中选择策略类型。您可以保留默认选项 Full Access 来允许对服务进行完全访问。或者,选择 Custom,然后使用 AWS 策略生成器创建自定义策略,或在策略窗口中键入您自己的策略。

  5. 如果适用,请完成该向导中的其余步骤,然后单击 Create VPC

修改您的安全组

如果您的 VPC 安全组限制出站流量,则您必须添加一个规则来允许目标设定为 AWS 服务的流量离开您的实例。

为终端节点添加出站规则

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Security Groups

  3. 选择您的 VPC 安全组,选择 Outbound Rules 选项卡,然后选择 Edit

  4. Type 列表中选择流量类型,并输入端口范围 (如果需要)。例如,如果您使用实例从 Amazon S3 中检索对象,请从 Type 列表中选择 HTTPS

  5. Destination 列表显示可用的 AWS 服务的前缀列表 ID 和名称。选择终端节点服务的前缀列表 ID,或将其键入。

  6. 选择 Save

有关安全组的更多信息,请参阅 您的 VPC 的安全组

修改终端节点

您可以通过更改或删除终端节点的策略并添加或删除终端节点所使用的路由表来修改该终端节点。

更改与终端节点关联的策略

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Endpoints

  3. 选择您的终端节点,再选择 Actions,然后选择 Edit Policy

  4. 在对话框中,您可以选择 Full Access 来允许完全访问。或者,选择 Custom,然后使用 AWS 策略生成器创建自定义策略,或在策略窗口中键入您自己的策略。完成此操作后,选择 Save Policy

    注意

    策略更改可能需要几分钟才能生效。

添加或删除终端节点所使用的路由表

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Endpoints

  3. 选择您的 VPC endpoint,再选择 Actions,然后选择 Choose Route Tables

  4. 在对话框中,选择或取消选择所需的路由表,然后选择 Save

描述您的终端节点

您可以使用 Amazon VPC 控制台查看您的终端节点以及有关每个终端节点的信息。

查看有关终端节点的信息

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Endpoints

  3. 选择您的终端节点。

  4. 您可以在 Summary 选项卡上查看有关终端节点的信息;例如,您可以在 Service 字段中获取服务的前缀列表名称。

    Route Tables 选项卡上,可以查看有关终端节点所使用的路由表的信息。在 Policy 选项卡上,可以查看附加到终端节点的 IAM 策略。

    注意

    Policy 选项卡仅显示终端节点策略。它不会为有权使用终端节点的 IAM 用户显示有关 IAM 策略的任何信息,也不会显示服务特定的策略;例如,S3 存储桶策略。

删除终端节点

如果您不再需要某一终端节点,则可将其删除。删除终端节点也会删除终端节点所使用的路由表中的终端节点路由,但不会影响与终端节点所在的 VPC 关联的任何安全组。

删除终端节点

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Endpoints

  3. 选择您的终端节点,再选择 Actions,然后选择 Delete Endpoint

  4. 在确认对话框中,选择 Yes, Delete

API 和 CLI 概述

您可以使用命令行工具或 Amazon EC2 查询 API 执行此页面上所述的任务。

创建 VPC endpoint

获取 AWS 服务的前缀列表名称、ID 和 IP 地址范围

修改 VPC endpoint

描述您的 VPC endpoint

获取可用于创建 VPC endpoint的 AWS 服务的列表

删除 VPC endpoint