Amazon Virtual Private Cloud
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

接口 VPC 终端节点 (AWS PrivateLink)

利用接口 VPC 终端节点 (接口终端节点),您可连接到由 AWS PrivateLink 提供支持的服务。这些服务包括一些 AWS 服务,由其他 AWS 客户和合作伙伴在他们自己的 VPC 中托管的服务 (称为终端节点服务),以及受支持的 AWS Marketplace 合作伙伴服务。服务的所有者是服务提供商,您 (作为创建接口终端节点的委托人) 是服务使用者

以下是设置接口终端节点的常规步骤:

  1. 选择要在其中创建接口终端节点的 VPC,然后提供您要连接到的 AWS 服务、终端节点服务或 AWS Marketplace 服务的名称。

  2. 在 VPC 中选择使用接口终端节点的子网。我们将在该子网中创建一个终端节点网络接口。您可以在不同的可用区中指定多个子网 (在服务支持的情况下),以帮助确保您的接口终端节点能够在出现可用区故障时复原。在此情况下,我们将在您指定的每个子网中创建一个终端节点网络接口。

    注意

    终端节点网络接口是由请求者管理的网络接口。您可以在您的账户中查看它,但不能亲自管理。有关更多信息,请参阅弹性网络接口

  3. 指定要与终端节点网络接口关联的安全组。安全组规则将控制从 VPC 中的资源发送到终端节点网络接口的通信。如果您未指定安全组,我们将关联 VPC 的默认安全组。

  4. (可选;仅限 AWS 服务和 AWS Marketplace 合作伙伴服务) 为终端节点启用私有 DNS 以使您能够使用服务的默认 DNS 主机名对服务发出请求。

  5. 已创建的接口终端节点在服务提供商接受后即可使用。服务提供商必须将服务配置为自动或手动接受请求。AWS 服务和 AWS Marketplace 服务一般会自动接受所有终端节点请求。有关终端节点生命周期的更多信息,请参阅接口终端节点生命周期

服务无法通过终端节点发起对您的 VPC 中的资源的请求。终端节点仅返回对从您的 VPC 中的资源启动的通信的响应。

有关支持的服务的更多信息,请参阅 VPC 终端节点s

私有 DNS

当您创建接口终端节点时,我们将生成您可用于与服务通信的终端节点特定 DNS 主机名。对于 AWS 服务和 AWS Marketplace 合作伙伴服务,您可以选择为终端节点启用私有 DNS。此选项将私有托管区域与您的 VPC 关联在一起。托管区域包含服务的默认 DNS 名称 (例如,ec2.us-east-1.amazonaws.com) 的记录集,用于解析为您的 VPC 中的终端节点网络接口的私有 IP 地址。这使您能够使用服务的默认 DNS 主机名而不是终端节点特定 DNS 主机名向服务发出请求。例如,如果您的现有应用程序向 AWS 服务发出请求,则这些应用程序将继续通过接口终端节点发出请求,而无需任何配置更改。

在下图中,您已为 Amazon Kinesis Data Streams 创建一个接口终端节点并在子网 2 中创建一个终端节点网络接口。您尚未为接口终端节点启用私有 DNS。任一子网中的实例都可通过接口终端节点使用终端节点特定 DNS 主机名 (DNS 名称 B) 与 Amazon Kinesis Data Streams 通信。子网 1 中的实例可通过 AWS 区域中的公有 IP 地址空间,使用服务的默认 DNS 名称 (DNS 名称 A) 与 Amazon Kinesis Data Streams 通信。

 使用接口终端节点访问 Kinesis

在下图中,您已为终端节点启用私有 DNS。任一子网中的实例都可通过接口终端节点使用终端节点特定 DNS 主机名 (DNS 名称 B) 或服务的默认 DNS 名称 (DNS 名称 A) 与 Amazon Kinesis Data Streams 通信。

 使用接口终端节点访问 Kinesis

重要

要使用私有 DNS,您必须将以下 VPC 属性设置为 trueenableDnsHostnamesenableDnsSupport。有关更多信息,请参阅 更新您的 VPC 的 DNS 支持。IAM 用户必须有权使用托管区域。有关更多信息,请参阅 Route 53 的身份验证和访问控制

接口终端节点属性和限制

要使用接口终端节点,您需要了解它们的属性和当前限制:

  • 接口终端节点可以通过 AWS Direct Connect 连接访问。但是,您无法通过 AWS VPN 连接或 VPC 对等连接访问接口终端节点。

  • 对于每个接口终端节点,每个可用区您只能选择一个子网。

  • 接口终端节点不支持使用终端节点策略。允许通过接口终端节点对服务进行完全访问。

  • 可能无法在所有可用区中通过接口终端节点使用服务。要了解支持的可用区,请使用 describe-vpc-endpoint-services 命令或使用 Amazon VPC 控制台。有关更多信息,请参阅 创建接口终端节点

  • 默认情况下,每个可用区的每个接口终端节点可支持高达 10 Gbps 的带宽。可基于您的使用情况自动添加更多容量。

  • 如果子网的网络 ACL 限制流量,您可能无法通过终端节点网络接口发送流量。请确保您增加了相应的规则,允许与子网的 CIDR 块之间的往返流量。

  • 接口终端节点仅支持 TCP 流量。

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

  • 无法标记终端节点。

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

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

  • 您可以为每个 VPC 创建的终端节点的数量有限制。有关更多信息,请参阅 VPC 终端节点

接口终端节点生命周期

从您创建接口终端节点 (终端节点连接请求) 时开始,接口终端节点将经历不同的阶段。在每个阶段,可能会有一些服务使用者和服务提供商可执行的操作。

 接口终端节点生命周期

以下规则适用:

  • 服务提供商可将其服务配置为自动或手动接受接口终端节点请求。AWS 服务和 AWS Marketplace 服务一般会自动接受所有终端节点请求。

  • 服务提供商无法删除连接至其服务的接口终端节点。只有请求接口终端节点连接的服务使用者才可以删除接口终端节点。

  • 服务提供商可以在接口终端节点已被接受 (手动或自动) 并处于 available 状态之后拒绝它。

接口终端节点的定价

您在为某个服务创建和使用接口终端节点时需要付费。将按小时使用费率和数据处理费率收费。有关更多信息,请参阅 Amazon VPC 定价

创建接口终端节点

要创建接口终端节点,您必须指定要在其中创建接口终端节点的 VPC 和要连接到的服务。

如果要连接到 AWS 服务或 AWS Marketplace 合作伙伴服务,则可以为接口终端节点启用私有 DNS。这允许您使用服务的默认 DNS 名称而非我们在您创建接口终端节点时生成的终端节点特定 DNS 名称向服务发出请求。

有关 AWS 服务的特定信息,请参阅 VPC 终端节点s

使用控制台创建连接到 AWS 服务的接口终端节点

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

  2. 在导航窗格中,选择 EndpointsCreate Endpoint

  3. 对于 Service category,请确保选中 AWS services

  4. 对于 Service Name,请选择要连接到的服务。对于 Type,请确保它指示 Interface

  5. 填写以下信息,然后选择 Create endpoint

    • 对于 VPC,选择要在其中创建终端节点的 VPC。

    • 对于 Subnets,选择要在其中创建终端节点网络接口的子网 (可用区)。

      注意

      并非所有可用区都支持所有 AWS 服务。

    • 对于 Enable Private DNS Name,(可选) 选中此复选框可为接口终端节点启用私有 DNS。

      注意

      要使用私有 DNS 选项,您的 VPC 的以下属性必须设置为 trueenableDnsHostnamesenableDnsSupport。有关更多信息,请参阅 更新您的 VPC 的 DNS 支持

    • 对于 Security group,选择要与终端节点网络接口关联的安全组。

要创建连接到终端节点服务的接口终端节点,您必须具有要连接到的服务的名称。服务提供商可为您提供此名称。

创建连接到终端节点服务的接口终端节点

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

  2. 在导航窗格中,选择 EndpointsCreate Endpoint

  3. 对于 Service category,选择 Find service by name

  4. 对于 Service Name,输入服务的名称 (例如,com.amazonaws.vpce.us-east-1.vpce-svc-0e123abc123198abc) 并选择 Verify

  5. 填写以下信息,然后选择 Create endpoint

    • 对于 VPC,选择要在其中创建终端节点的 VPC。

    • 对于 Subnets,选择要在其中创建终端节点网络接口的子网 (可用区)。

      注意

      并非所有可用区都支持此服务。

    • 对于 Security group,选择要与终端节点网络接口关联的安全组。

创建连接到 AWS Marketplace 合作伙伴服务的接口终端节点

  1. 转至 AWS Marketplace 上的 PrivateLink 页面并向软件即服务 (SaaS) 提供商订阅服务。支持接口终端节点的服务包括通过终端节点进行连接的选项。

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

  3. 在导航窗格中,选择 EndpointsCreate Endpoint

  4. 对于 Service category,选择 Your AWS Marketplace services.

  5. 选择您已订阅的 AWS Marketplace 服务。

  6. 填写以下信息,然后选择 Create endpoint

    • 对于 VPC,选择要在其中创建终端节点的 VPC。

    • 对于 Subnets,选择要在其中创建终端节点网络接口的子网 (可用区)。

      注意

      并非所有可用区都支持此服务。

    • 对于 Security group,选择要与终端节点网络接口关联的安全组。

使用 AWS CLI 创建接口终端节点

  1. 使用 describe-vpc-endpoint-services 命令获取可用服务的列表。在返回的输出中,记录要连接到的服务的名称。ServiceType 字段指示是通过接口终端节点还是网关终端节点连接到服务。ServiceName 字段提供服务的名称。

    aws ec2 describe-vpc-endpoint-services
    { "ServiceDetails": [ ... { "ServiceType": [ { "ServiceType": "Interface" } ], "PrivateDnsName": "elasticloadbalancing.us-east-1.amazonaws.com", "ServiceName": "com.amazonaws.us-east-1.elasticloadbalancing", "VpcEndpointPolicySupported": false, "Owner": "amazon", "AvailabilityZones": [ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e", "us-east-1f" ], "AcceptanceRequired": false, "BaseEndpointDnsNames": [ "elasticloadbalancing.us-east-1.vpce.amazonaws.com" ] }, ... }
  2. 要创建接口终端节点,请使用 create-vpc-endpoint 命令并指定 VPC ID、VPC 终端节点 (接口) 的类型、服务名称、将使用终端节点的子网以及要与终端节点网络接口关联的安全组。

    以下示例创建一个连接到 Elastic Load Balancing 服务的接口终端节点。

    aws ec2 create-vpc-endpoint --vpc-id vpc-ec43eb89 --vpc-endpoint-type Interface --service-name com.amazonaws.us-east-1.elasticloadbalancing --subnet-id subnet-abababab --security-group-id sg-1a2b3c4d
    { "VpcEndpoint": { "PolicyDocument": "{\n \"Statement\": [\n {\n \"Action\": \"*\", \n \"Effect\": \"Allow\", \n \"Principal\": \"*\", \n \"Resource\": \"*\"\n }\n ]\n}", "VpcId": "vpc-ec43eb89", "NetworkInterfaceIds": [ "eni-bf8aa46b" ], "SubnetIds": [ "subnet-abababab" ], "PrivateDnsEnabled": true, "State": "pending", "ServiceName": "com.amazonaws.us-east-1.elasticloadbalancing", "RouteTableIds": [], "Groups": [ { "GroupName": "default", "GroupId": "sg-1a2b3c4d" } ], "VpcEndpointId": "vpce-088d25a4bbf4a7abc", "VpcEndpointType": "Interface", "CreationTimestamp": "2017-09-05T20:14:41.240Z", "DnsEntries": [ { "HostedZoneId": "Z7HUB22UULQXV", "DnsName": "vpce-088d25a4bbf4a7abc-ks83awe7.elasticloadbalancing.us-east-1.vpce.amazonaws.com" }, { "HostedZoneId": "Z7HUB22UULQXV", "DnsName": "vpce-088d25a4bbf4a7abc-ks83awe7-us-east-1a.elasticloadbalancing.us-east-1.vpce.amazonaws.com" }, { "HostedZoneId": "Z1K56Z6FNPJRR", "DnsName": "elasticloadbalancing.us-east-1.amazonaws.com" } ] } }

    或者,以下示例创建一个连接到另一 AWS 账户中的终端节点服务的接口终端节点 (服务提供商将为您提供终端节点服务的名称)。

    aws ec2 create-vpc-endpoint --vpc-id vpc-ec43eb89 --vpc-endpoint-type Interface --service-name com.amazonaws.vpce.us-east-1.vpce-svc-0e123abc123198abc --subnet-id subnet-abababab --security-group-id sg-1a2b3c4d

    在返回的输出中,记录 DnsName 字段。您可以使用这些 DNS 名称访问 AWS 服务。

使用 适用于 Windows PowerShell 的 AWS 工具 或 API 描述可用服务

使用 适用于 Windows PowerShell 的 AWS 工具 或 API 创建 VPC 终端节点

查看您的接口终端节点

在创建接口终端节点之后,您可以查看有关它的信息。

使用控制台查看有关接口终端节点的信息

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

  2. 在导航窗格中,选择 Endpoints 并选择您的接口终端节点。

  3. 要查看有关接口终端节点的信息,请选择 DetailsDNS Names 字段将显示用于访问服务的 DNS 名称。

  4. 要查看已创建接口终端节点的子网以及每个子网中的终端节点网络接口的 ID,请选择 Subnets

  5. 要查看与终端节点网络接口关联的安全组,请选择 Security Groups

使用 AWS CLI 描述您的接口终端节点

  • 您可使用 describe-vpc-endpoints 命令描述您的终端节点。

    aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-088d25a4bbf4a7abc

使用 适用于 Windows PowerShell 的 AWS 工具 或 API 描述您的 VPC 终端节点

为接口终端节点创建和管理通知

您可以创建通知以接收针对您的接口终端节点上发生的特定事件的提醒。例如,您可在服务提供商接受接口终端节点时收到一封电子邮件。要创建通知,您必须将 Amazon SNS 主题与通知关联。您可以订阅 SNS 主题以在终端节点事件发生时收到电子邮件通知。

您用于通知的 Amazon SNS 主题必须具有允许 Amazon 的 VPC 终端节点服务代表您发布通知的主题策略。确保在您的主题策略中包含以下语句。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南 中的管理对您的 Amazon SNS 主题的访问

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vpce.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:region:account:topic-name" } ] }

为接口终端节点创建通知

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

  2. 在导航窗格中,选择 Endpoints 并选择您的接口终端节点。

  3. 选择 ActionsCreate notification

  4. 选择要与通知关联的 SNS 主题的 ARN。

  5. 对于 Events,选择要接收其通知的终端节点事件。

  6. 选择 Create Notification

在创建通知后,您可以更改与通知关联的 SNS 主题,也可以为通知指定不同的终端节点事件。

为终端节点服务修改通知

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

  2. 在导航窗格中,选择 Endpoints 并选择您的接口终端节点。

  3. 选择 ActionsModify Notification

  4. 指定 SNS 主题的 ARN 并根据要求更改终端节点事件。

  5. 选择 Modify Notification

如果您不再需要某通知,则可删除它。

删除通知

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

  2. 在导航窗格中,选择 Endpoints 并选择您的接口终端节点。

  3. 选择 ActionsDelete notification

  4. 选择 Yes, Delete

使用 AWS CLI 创建和管理通知

  1. 要为接口终端节点创建通知,请使用 create-vpc-endpoint-connection-notification 命令并指定 SNS 主题的 ARN、要通知的事件以及终端节点的 ID;例如:

    aws ec2 create-vpc-endpoint-connection-notification --connection-notification-arn arn:aws:sns:us-east-2:123456789012:EndpointNotification --connection-events Accept Reject --vpc-endpoint-id vpce-123abc3420c1931d7
  2. 要查看您的通知,请使用 describe-vpc-endpoint-connection-notifications 命令:

    aws ec2 describe-vpc-endpoint-connection-notifications
  3. 要更改通知的 SNS 主题或终端节点事件,请使用 modify-vpc-endpoint-connection-notification 命令;例如:

    aws ec2 modify-vpc-endpoint-connection-notification --connection-notification-id vpce-nfn-008776de7e03f5abc --connection-events Accept --connection-notification-arn arn:aws:sns:us-east-2:123456789012:mytopic
  4. 要删除通知,请使用 delete-vpc-endpoint-connection-notifications 命令:

    aws ec2 delete-vpc-endpoint-connection-notifications --connection-notification-ids vpce-nfn-008776de7e03f5abc

通过接口终端节点访问服务

在创建接口终端节点之后,您可以通过终端节点 URL 将请求提交给支持的服务。您可以使用以下命令:

  • 我们为接口终端节点生成的终端节点特定区域 DNS 主机名。主机名在其名称中包含一个唯一终端节点标识符、服务标识符、区域以及 vpce.amazonaws.com;例如,vpce-0fe5b17a0707d6abc-29p5708s.ec2.us-east-1.vpce.amazonaws.com

  • 我们为终端节点可用的每个可用区生成的终端节点特定区域 DNS 主机名。主机名在其名称中包含可用区;例如,vpce-0fe5b17a0707d6abc-29p5708s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

  • 如果您为终端节点启用了私有 DNS (私有托管区域),则为区域的 AWS 服务的默认 DNS 主机名;例如,ec2.us-east-1.amazonaws.com

  • VPC 中的终端节点网络接口的私有 IP 地址。

例如,在您已具有连接到 Elastic Load Balancing 的接口终端节点且您尚未为其启用私有 DNS 选项的子网中,通过一个实例使用以下 AWS CLI 命令来描述您的负载均衡器。此命令将使用终端节点特定区域 DNS 主机名来通过接口终端节点发出请求:

aws elbv2 describe-load-balancers --endpoint-url https://vpce-0f89a33420c193abc-bluzidnv.elasticloadbalancing.us-east-1.vpce.amazonaws.com/

如果您启用私有 DNS 选项,则不必在请求中指定终端节点 URL。AWS CLI 将使用区域的服务的默认终端节点 (elasticloadbalancing.us-east-1.amazonaws.com)。

修改接口终端节点

您可以通过更改接口终端节点所在的子网并更改与终端节点网络接口关联的安全组来修改接口终端节点。如果您删除接口终端节点的子网,则将删除子网中相应的终端节点网络接口。

更改接口终端节点的子网

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

  2. 在导航窗格中,选择 Endpoints 并选择接口终端节点。

  3. 选择 ActionsManage Subnets

  4. 根据要求选择或取消选择子网,然后选择 Modify Subnets

添加或删除与接口终端节点关联的安全组

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

  2. 在导航窗格中,选择 Endpoints 并选择接口终端节点。

  3. 选择 ActionsManage security groups

  4. 根据要求选择或取消选择安全组,然后选择 Save

使用 AWS CLI 修改 VPC 终端节点

  1. 使用 describe-vpc-endpoints 命令获取您的接口终端节点的 ID。

    aws ec2 describe-vpc-endpoints
  2. 以下示例使用 modify-vpc-endpoint 命令将子网 subnet-aabb1122 添加到接口终端节点。

    aws ec2 modify-vpc-endpoint --vpc-endpoint-id vpce-0fe5b17a0707d6abc --add-subnet-id subnet-aabb1122

使用 适用于 Windows PowerShell 的 AWS 工具 或 API 修改 VPC 终端节点