

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS 服务 通过以下方式访问 AWS PrivateLink
<a name="privatelink-access-aws-services"></a>

您 AWS 服务 使用终端节点访问。默认的服务端点是公有接口，因此您必须向 VPC 添加互联网网关，这样流量才能从 VPC 流向 AWS 服务。如果此配置不符合您的网络安全要求，则可以使用将您的 VPC 连接 AWS PrivateLink 到， AWS 服务 就像它们在您的 VPC 中一样，无需使用互联网网关。

您可以 AWS PrivateLink 使用 VPC 终端节点私密访问与之集成的内容。 AWS 服务 您无需使用互联网网关即可构建和管理应用程序堆栈的所有层。

**定价**  
按照您的接口 VPC 端点在每个可用区预置的每一小时向您收取费用。此外，您还需按照处理的数据 GB 付费。有关更多信息，请参阅[AWS PrivateLink 定价](https://aws.amazon.com/privatelink/pricing/)。

**Topics**
+ [概述](#interface-endpoint-overview)
+ [DNS 主机名](#interface-endpoint-dns-hostnames)
+ [DNS 解析](#interface-endpoint-dns-resolution)
+ [私有 DNS](#interface-endpoint-private-dns)
+ [子网和可用区](#aws-service-subnets-zones)
+ [IP 地址类型](#aws-service-ip-address-type)
+ [DNS 记录 IP 类型](#aws-services-dns-record-ip-type)
+ [与…集成的服务](aws-services-privatelink-support.md)
+ [已启用跨区域 AWS 服务](aws-services-cross-region-privatelink-support.md)
+ [创建接口端点](create-interface-endpoint.md)
+ [配置接口端点](interface-endpoints.md)
+ [接收接口端点事件的提醒](manage-notifications-endpoint.md)
+ [删除接口端点](delete-interface-endpoint.md)
+ [网关端点](gateway-endpoints.md)

## 概述
<a name="interface-endpoint-overview"></a>

您可以 AWS 服务 通过他们的公共服务端点进行访问，也可以 AWS 服务 使用连接到支持的终端节点 AWS PrivateLink。本概述比较了这些方法。

**通过公有服务端点进行访问**  
下图显示了实例如何 AWS 服务 通过公共服务终端节点进行访问。 AWS 服务 从公有子网中的实例到的流量将路由到 VPC 的 Internet 网关，然后路由到 AWS 服务。从私有子网中的实例流向 AWS 服务 的流量路由到 NAT 网关，然后路由到 VPC 的互联网网关，然后再路由到 AWS 服务。当这些流量通过互联网网关时，它不会离开网络。 AWS 

![\[流向的流量通过互联网网关 AWS 服务 离开您的 VPC，但仍留在 AWS 网络中。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/access-with-igw.png)


**通过 Connect AWS PrivateLink**  
下图显示了实例是如何 AWS 服务 通过访问 AWS PrivateLink的。首先，创建接口 VPC 终端节点，用于在您的 VPC 中的子网和 AWS 服务 正在使用的网络接口之间建立连接。发往的流量使用 DNS 解析到终端节点网络接口的私有 IP 地址，然后使用 VPC 终端节点与之间的连接发送到终端节点网络接口的私有 IP 地址 AWS 服务。 AWS 服务 AWS 服务 

![\[来自子网的流量通过接口 VPC 端点连接到 AWS 服务。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/access-with-privatelink.png)


AWS 服务 自动接受连接请求。服务无法通过 VPC 端点发起对资源的请求。

## DNS 主机名
<a name="interface-endpoint-dns-hostnames"></a>

大多数都 AWS 服务 提供公共区域终端节点，其语法如下。

```
protocol://service_code.region_code.amazonaws.com
```

例如，us-east-2 CloudWatch 中亚马逊的公共终端节点如下所示。

```
https://monitoring.us-east-2.amazonaws.com
```

使用 AWS PrivateLink，您可以使用私有终端节点向服务发送流量。当您创建接口 VPC 终端节点时，我们会创建区域和区域 DNS 名称，您可以使用这些名称 AWS 服务 从您的 VPC 与进行通信。

接口 VPC 端点的区域 DNS 名称的语法如下：

```
endpoint_id.service_id.region.vpce.amazonaws.com
```

分区 DNS 名称的语法如下：

```
endpoint_id-az_name.service_id.region.vpce.amazonaws.com
```

在为创建接口 VPC 终端节点时 AWS 服务，可以启用[私有 DNS](#interface-endpoint-private-dns)。借助私有 DNS，您可以继续使用其公共端点的 DNS 名称向服务发出请求，同时通过接口 VPC 端点利用私有连接。有关更多信息，请参阅 [DNS 解析](#interface-endpoint-dns-resolution)。

以下[describe-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html)命令显示接口终端节点的 DNS 条目。

```
aws ec2 describe-vpc-endpoints --vpc-endpoint-id vpce-099deb00b40f00e22 --query VpcEndpoints[*].DnsEntries
```

以下是启用私 CloudWatch 有 DNS 名称的 Amazon 接口终端节点的输出示例。第一个条目是私有区域端点。接下来的三个条目是私有分区端点。最后一个条目来自隐藏的私有托管区，该区域可将对公有端点的请求解析为端点网络接口的私有 IP 地址。

```
[
    [
        {
            "DnsName": "vpce-099deb00b40f00e22-lj2wisx3.monitoring.us-east-2.vpce.amazonaws.com",
            "HostedZoneId": "ZC8PG0KIFKBRI"
        },
        {
            "DnsName": "vpce-099deb00b40f00e22-lj2wisx3-us-east-2c.monitoring.us-east-2.vpce.amazonaws.com",
            "HostedZoneId": "ZC8PG0KIFKBRI"
        },
        {
            "DnsName": "vpce-099deb00b40f00e22-lj2wisx3-us-east-2a.monitoring.us-east-2.vpce.amazonaws.com",
            "HostedZoneId": "ZC8PG0KIFKBRI"
        },
        {
            "DnsName": "vpce-099deb00b40f00e22-lj2wisx3-us-east-2b.monitoring.us-east-2.vpce.amazonaws.com",
            "HostedZoneId": "ZC8PG0KIFKBRI"
        },
        {
            "DnsName": "monitoring.us-east-2.amazonaws.com",
            "HostedZoneId": "Z06320943MMOWYG6MAVL9"
        }
    ]
]
```

## DNS 解析
<a name="interface-endpoint-dns-resolution"></a>

我们为您的接口 VPC 端点创建的 DNS 记录是公有的。因此，这些 DNS 名称是可公开解析的。但是，来自 VPC 外部的 DNS 请求仍会返回端点网络接口的私有 IP 地址，因此，除非您有权访问 VPC，否则这些 IP 地址不能用于访问端点服务。

## 私有 DNS
<a name="interface-endpoint-private-dns"></a>

如果您为接口 VPC 终端节点启用私有 DNS，并且您的 VPC 同时启用了 [DNS 主机名和 DNS 解析](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)，我们将为您创建一个隐藏的 AWS托管私有托管区域。托管区包含服务的默认 DNS 名称的记录集，用于解析为您的 VPC 中的端点网络接口的私有 IP 地址。因此，如果您的现有应用程序 AWS 服务 使用公共区域终端节点向发送请求，则这些请求现在会通过终端节点网络接口，而无需您对这些应用程序进行任何更改。

我们建议您为 AWS 服务的 VPC 端点启用私有 DNS 名称。这样可以确保使用公共服务终端节点的请求（例如通过 AWS SDK 发出的请求）解析到您的 VPC 终端节点。

Amazon 为您的 VPC 提供 DNS 服务器，称为 [Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html)。Route 53 Resolver 自动解析私有托管区域中的本地 VPC 域名和记录。但是，您不能从 VPC 外部使用 Route 53 Resolver。如果要从本地网络访问您的 VPC 端点，则可以使用 Route 53 Resolver 端点和解析器规则。有关更多信息，请参阅[AWS Transit Gateway 与 AWS PrivateLink 和集成 Amazon Route 53 Resolver](https://aws.amazon.com/blogs/networking-and-content-delivery/integrating-aws-transit-gateway-with-aws-privatelink-and-amazon-route-53-resolver/)。

## 子网和可用区
<a name="aws-service-subnets-zones"></a>

您可以配置 VPC 端点，每个可用区中有一个子网。我们将在您的子网中为 VPC 端点创建一个端点网络接口。我们将根据 VPC 端点的 [IP 地址类型](#aws-service-ip-address-type)，为其子网中的每个端点网络接口分配 IP 地址。端点网络接口的 IP 地址在其 VPC 端点的生命周期内不会变更。

在生产环境中，为提高可用性和弹性，我们建议采取以下措施：
+ 为每个 VPC 终端节点配置至少两个可用区，并在这些可用区 AWS 服务 中部署必须访问的 AWS 资源。
+ 为 VPC 端点配置私有 DNS 名称。
+ 使用 AWS 服务 其区域 DNS 名称（也称为公共终端节点）进行访问。

下图显示了 Amazon CloudWatch 的 VPC 终端节点，其终端节点网络接口位于单个可用区。当 VPC 中任何子网中的任何资源 CloudWatch使用其公有终端节点访问 Amazon 时，我们会将流量解析到终端节点网络接口的 IP 地址。这包括来自其他可用区子网的流量。但是，如果可用区 1 受损，则可用区 2 中的资源将无法访问 Amazon CloudWatch。

![\[为单个可用区 CloudWatch 启用的亚马逊接口 VPC 终端节点。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/interface-endpoint-single-az.png)


下图显示了 Amazon 的 VPC 终端节点， CloudWatch 其终端节点网络接口位于两个可用区。当 VPC 中任何子网中的任何资源使用其公有终端节点访问 Amazon CloudWatch 时，我们会选择一个健康的终端节点网络接口，使用轮询算法在它们之间切换。然后，我们会将流量解析到选定端点网络接口的 IP 地址。

![\[适用于多个可用区域的 Amazon CloudWatch 接口 VPC 终端节点。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/interface-endpoint-multi-az.png)


如果它更适合您的用例，则可以通过使用同一可用区中的端点网络接口，将流量从您的资源发送到 AWS 服务 。为此，请使用端点网络接口的私有区域端点或 IP 地址。

![\[其流量使用私有区域端点的接口 VPC 端点。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/interface-endpoint-multi-az-zonal.png)


## IP 地址类型
<a name="aws-service-ip-address-type"></a>

AWS 服务 即使他们不支持 IPv6 通过其公共端点，也可以 IPv6 通过其私有端点提供支持。支持的端点 IPv6 可以使用 AAAA 记录响应 DNS 查询。

**IPv6 为接口终端节点启用的要求**
+  AWS 服务 必须使其服务端点可用 IPv6。有关更多信息，请参阅 [查看 IPv6 支持](aws-services-privatelink-support.md#vpce-ipv6-support)。
+ 接口端点的 IP 地址类型必须与接口端点的子网兼容，如下所述：
  + **IPv4**— 为您的端点网络接口分配 IPv4 地址。仅当所有选定的子网都有 IPv4 地址范围时，才支持此选项。
  + **IPv6**— 为您的端点网络接口分配 IPv6 地址。仅当所有选定的子网仅为子网时， IPv6 才支持此选项。
  + **Dualstack** — 将 IPv4 和 IPv6 地址分配给您的端点网络接口。仅当所有选定的子网同时具有 IPv4 和 IPv6 地址范围时，才支持此选项。

如果 VPC 终端节点支持的接口 IPv4，则终端节点网络接口具有 IPv4地址。如果 VPC 终端节点支持的接口 IPv6，则终端节点网络接口具有 IPv6 地址。无法通过互联网访问端点网络接口 IPv6 的地址。如果您使用 IPv6 地址描述端点网络接口，请注意该接口已启`denyAllIgwTraffic`用。

## DNS 记录 IP 类型
<a name="aws-services-dns-record-ip-type"></a>

根据您的 IP 地址类型，当您调用 VPC 终端节点时，该 AWS 服务可以返回 A 记录、AAAA 记录或 A 和 AAAA 记录。您可以通过修改 DNS 记录 IP 类型来自定义 AWS 服务返回的记录类型。下表显示支持的 DNS 记录 IP 类型和返回的记录类型：


| DNS 记录 IP 类型 | 返回的记录类型 | 
| --- | --- | 
| IPv4 | A | 
| IPv6 | AAAA | 
| 双堆栈 | A 和 AAAA | 

默认情况下，DNS 记录类型与 IP 地址类型相同。您可以选择不同的 DNS 记录 IP 类型，但必须为端点服务使用兼容的 IP 地址类型。下表显示接口端点每种 IP 地址类型支持的 DNS 记录 IP 类型：


| IP 地址类型 | 支持的 DNS 记录 IP 类型 | 
| --- | --- | 
| IPv4 | IPv4 | 
| IPv6 | IPv6 | 
| 双堆栈 | Dualstack\$1、、、、服务定义 IPv4 IPv6 | 

\$1 表示默认 DNS 记录 IP 类型。

服务定义的 DNS 记录 IP 类型会根据您调用的服务端点返回 DNS 记录。如果您使用服务定义的 DNS 记录 IP 类型，请确保您的服务可以处理来自服务端点的可变调用。要查看您的接口终端节点支持的 DNS 记录，请在或中查看您的 VPC 终端节点的 AWS 管理控制台 DNS 名称[DescribeVpcEndpoints](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcEndpoints.html)。

网关端点的 DNS 记录 IP 类型行为有所不同。有关更多信息，请参阅[网关端点的 DNS 记录 IP 类型](gateway-endpoints.md#gateway-endpoint-dns-record-ip-type)。