

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

# 网关端点
<a name="gateway-endpoints"></a>

网关 VPC 端点可提供与 Amazon S3 和 DynamoDB 的可靠连接，而无需为您的 VPC 提供互联网网关或 NAT 设备。与其他类型的 VPC 终端节点不同 AWS PrivateLink，网关终端节点不使用。

Amazon S3 和 DynamoDB 同时支持网关端点和接口端点。有关各选项的比较，请参阅以下内容：
+ [适用于 Amazon S3 的 VPC 端点类型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3)
+ [适用于 Amazon DynamoDB 的 VPC 端点类型](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-ddb)

**定价**  
使用网关端点不会发生任何额外费用。

**Topics**
+ [

## 概述
](#gateway-endpoint-overview)
+ [

## 路由
](#gateway-endpoint-routing)
+ [

## 安全性
](#gateway-endpoint-security)
+ [

## IP 地址类型
](#gateway-endpoint-ip-address-type)
+ [

## DNS 记录 IP 类型
](#gateway-endpoint-dns-record-ip-type)
+ [Amazon S3 的端点](vpc-endpoints-s3.md)
+ [适用于 DynamoDB 的端点](vpc-endpoints-ddb.md)

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

您可以通过 Amazon S3 和 DynamoDB 的公有服务端点或网关端点访问。本概述比较了这些方法。

**通过互联网网关访问**  
下图显示了实例如何通过其公有服务端点访问 Amazon S3 和 DynamoDB。从公有子网中的实例流向 Amazon S3 或 DynamoDB 的流量路由到 VPC 的互联网网关，然后路由到服务。私有子网中的实例无法向 Amazon S3 或 DynamoDB 发送流量，因为根据定义，私有子网没有通往互联网网关的路由。若要使私有子网中的实例能够向 Amazon S3 或 DynamoDB 发送流量，您需要向公有子网添加 NAT 设备并将私有子网中的流量路由到 NAT 设备。当流向 Amazon S3 或 DynamoDB 的流量通过互联网网关时，它不会离开网络。 AWS 

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


**通过网关端点进行访问**  
下图显示了实例如何通过网关端点访问 Amazon S3 和 DynamoDB。从您的 VPC 流向 Amazon S3 或 DynamoDB 的流量将路由到网关端点。每个子网路由表都必须有一条路由，该路由使用服务的前缀列表将以服务为目的地的流量发送到网关端点。有关更多信息，请参阅《*Amazon VPC 用户指南*》中的 [AWS托管的前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)。

![\[来自 VPC 的流量将路由到网关端点。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/gateway-endpoints.png)


## 路由
<a name="gateway-endpoint-routing"></a>

创建网关端点时，选择您启用的子网的 VPC 路由表。以下路由将自动添加到您选择的各个路由表。目的地是所拥有服务的前缀列表 AWS ，目标是网关终端节点。


| 目标位置 | Target | 
| --- | --- | 
| prefix\$1list\$1id | gateway\$1endpoint\$1id | 

**注意事项**
+ 您可以查看我们添加到您的路由表中的端点路由，但不能修改或删除它们。要向路由表添加端点路由，请将其与网关端点关联。当您取消路由表与网关端点的关联或删除网关端点时，我们会删除端点路由。
+ 与网关端点关联的路由表关联的子网中的所有实例会自动使用该网关端点来访问该服务。未与这些路由表关联的子网中的实例使用公有服务端点，而不是网关端点。
+ 路由表既可以有通往 Amazon S3 的端点路由，也可以有通往 DynamoDB 的端点路由。您可以在多个路由表中拥有通往同一服务（Amazon S3 或 DynamoDB）的端点路由。您不能在一个路由表中拥有通往同一服务（Amazon S3 或 DynamoDB）的多个端点路由。
+ 我们使用与流量匹配的最明确路由以判断数据流的路由方式 (最长前缀匹配)。对于带有端点路由的路由表，这意味着以下内容：
  + 如果存在一条向互联网网关发送所有互联网流量 (0.0.0.0/0) 的路由，端点路由优先于以当前区域中的服务（Amazon S3 或 DynamoDB）为目的地的流量。发往不同地点的流量 AWS 服务 使用互联网网关。
  + 以不同区域的服务（Amazon S3 或 DynamoDB）为目的地的流量会流向互联网网关，因为前缀列表特定于某个区域。
  + 如果在同一区域中存在为服务（Amazon S3 或 DynamoDB）指定确切 IP 地址范围的路由，则该路由优先于端点路由。

## 安全性
<a name="gateway-endpoint-security"></a>

当您的实例通过网关端点访问 Amazon S3 或 DynamoDB 时，它们会使用其公有端点访问服务。这些实例的安全组必须允许进出服务的流量。以下是出站规则的示例。它引用服务的[前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)的 ID。


| 目标位置 | 协议 | 端口范围 | 
| --- | --- | --- | 
| prefix\$1list\$1id | TCP | 443 | 

这些实例 ACLs 的子网网络还必须允许进出服务的流量。以下是出站规则的示例。您不能在网络 ACL 规则中引用前缀列表，但可以从其前缀列表中获取服务的 IP 地址范围。


| 目标位置 | 协议 | 端口范围 | 
| --- | --- | --- | 
| service\$1cidr\$1block\$11 | TCP | 443 | 
| service\$1cidr\$1block\$12 | TCP | 443 | 
| service\$1cidr\$1block\$13 | TCP | 443 | 

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

IP 地址类型决定哪个前缀列表与您的路由表相关联。

**IPv6 为网关终端节点启用的要求**
+ 网关端点的 IP 地址类型必须与网关端点的子网兼容，如下所述：
  + **IPv4**— 将服务的 IPv4 前缀列表添加到您的路由表中。
  + **IPv6**— 将服务的 IPv6 前缀列表添加到您的路由表中。仅当所有选定的子网仅为子网时， IPv6 才支持此选项。
  + **Dualstack** — 将服务的 IPv4 前缀列表添加到您的路由表中，并将服务的 IPv6 前缀列表添加到您的路由表中。仅当所有选定的子网同时具有 IPv4 和 IPv6 地址范围时，才支持此选项。

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

默认情况下，网关终端节点会根据您调用的服务终端节点返回 DNS 记录。如果您使用 IPv4 服务终端节点（例如）创建网关终端节点`s3.us-east-2.amazonaws.com`，Amazon S3 会向您的客户端返回 A 记录，您的路由表中的所有子网都会使用 IPv4。

相反，如果您使用双栈服务终端节点（例如）创建网关终端节点，Amazon S3 会向您的客户端返回 A 和 AAAA 记录，而您的路由表中的子网使用和。`s3.dualstack.us-east-2.amazonaws.com` IPv4 IPv6

**注意**  
对于目录存储桶或 S3 Express One Zone，数据平面的网关端点将`s3express-use2-az1.dualstack.us-east-2.amazonaws.com`分别为`s3express-use2-az1.us-east-2.amazonaws.com`和。

DNS 记录 IP 类型会影响流量路由到客户端的方式。如果您使用 IPv4 服务终端节点创建网关终端节点，然后调用 dualstack 服务终端节点，则使用 AAAA 记录的流量将不会通过网关终端节点路由。如果存在兼容路径，则流量将被丢弃或路由到 IPv6兼容的路径上。如果您使用服务定义的 DNS 记录 IP 类型，请确保您的服务可以处理来自多个服务端点的可变调用。

您可以自定义 DNS 记录 IP 类型以选择为特定终端节点返回哪些记录，而不是[服务定义](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DnsOptionsSpecification.html)的默认 DNS 记录 IP 类型设置。下表显示支持的 DNS 记录 IP 类型和返回的记录类型：


| DNS 记录 IP 类型 | 返回的记录类型 | 
| --- | --- | 
| IPv4 | A | 
| IPv6 | AAAA | 
| 双堆栈 | A 和 AAAA | 
| 服务定义 | 记录取决于服务端点 | 

要选择 DNS 记录 IP 类型，必须为终端节点服务使用兼容的 IP 地址类型。下表显示了网关终端节点每种 IP 地址类型支持的 DNS 记录 IP 类型：


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

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

**注意**  
 要使用网关终端节点服务定义以外的 DNS 记录 IP 类型，您必须在 VPC 设置中允许`enableDnsSupport`和`enableDnsHostnames`属性。

您无法更改 DynamoDB 网关终端节点的 DNS 记录 IP 类型。DynamoDB 仅支持服务定义的 DNS 记录 IP 类型。

接口端点的 DNS 记录 IP 类型行为有所不同。有关更多信息，请参阅[接口端点的 DNS 记录 IP 类型](privatelink-access-aws-services.md#aws-services-dns-record-ip-type)。

# 适用于 Amazon S3 的网关端点
<a name="vpc-endpoints-s3"></a>

您可以使用网关 VPC 端点从 VPC 访问 Amazon S3。创建网关端点后，您可以将其添加为从您的 VPC 流向 Amazon S3 的流量的路由表中的目标。

使用网关端点不会发生任何额外费用。

Amazon S3 同时支持网关端点和接口端点。借助网关端点，您可以从 VPC 访问 Amazon S3，而无需为 VPC 配备互联网网关或 NAT 设备，也无需任何额外费用。但是，网关终端节点不允许从本地网络、其他 AWS 区域的对 VPCs 等设备或通过传输网关进行访问。对于这些场景，您必须使用接口端点，后者需要额外付费。有关更多信息，请参阅《Amazon S3 用户指南》**中的[适用于 Amazon S3 的 VPC 端点类型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3)。

**Topics**
+ [

## 注意事项
](#gateway-endpoint-considerations-s3)
+ [

## 私有 DNS
](#private-dns-s3)
+ [

## 创建网关端点
](#create-gateway-endpoint-s3)
+ [

## 使用存储桶策略控制访问
](#bucket-policies-s3)
+ [

## 关联路由表
](#associate-route-tables-s3)
+ [

## 编辑 VPC 端点策略
](#edit-vpc-endpoint-policy-s3)
+ [

## 删除网关端点
](#delete-gateway-endpoint-s3)

## 注意事项
<a name="gateway-endpoint-considerations-s3"></a>
+ 网关端点仅在您创建该端点所在的区域可用。请务必在您的 S3 存储桶所在的区域内创建网关端点。
+ 如果您使用的是 Amazon DNS 服务器，则必须为您的 VPC 同时启用 [DNS 主机名和 DNS 解析](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。如果您使用自己的 DNS 服务器，请确保将针对 Amazon S3 的请求正确解析为 AWS维护的 IP 地址。
+ 对于通过网关端点访问 Amazon S3 的实例，安全组的出站规则必须允许进出 Amazon S3 的流量。您可以在安全组规则中引用 Amazon S3 的[前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)的 ID。
+ 对于通过网关端点访问 Amazon S3 的实例，子网的网络 ACL 必须允许进出 Amazon S3 的流量。您不能在网络 ACL 规则中引用前缀列表，但可以从 Amazon S3 的[前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)中获取 Amazon S3 的 IP 地址范围。
+ 检查您使用的是否需要访问 S3 存储桶。 AWS 服务 例如，某项服务可能需要访问包含日志文件的存储桶，或者可能需要您将驱动程序或代理下载到 EC2 实例。如果是，请确保您的终端节点策略允许 AWS 服务 或资源使用`s3:GetObject`操作访问这些存储桶。
+ 对于通过 VPC 端点向 Amazon S3 发出的请求，不能在身份策略或存储桶策略中使用 `aws:SourceIp` 条件。改为使用 `aws:VpcSourceIp` 条件。或者，您可以使用路由表来控制哪些 EC2 实例可以通过 VPC 端点访问 Amazon S3。
+ Amazon S3 收到的来自受影响子网中实例的一个 IPv4 或多个源 IPv6 地址在您的 VPC 中从公有地址更改为私有地址。端点将切换网络路由，并断开打开的 TCP 连接。之前使用公共地址的连接不会恢复。建议您在创建或修改端点时不要运行任何重要任务；或进行测试以确保您的软件在连接中断后可自动重新连接到 Amazon S3。
+ 无法将端点连接扩展到 VPC 之外。VPN 连接、VPC 对等连接、传输网关或您的 VPC 中 Direct Connect 连接另一端的资源无法使用网关终端节点与 Amazon S3 通信。
+ 您的账户的默认配额为每个区域 20 个网关端点，该配额可调整。每个 VPC 的网关端点限制为 255 个。

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

在为 Amazon S3 创建网关端点和接口端点时，您可以配置私有 DNS 以优化成本。

**Route 53 Resolver**  
Amazon 为您的 VPC 提供 DNS 服务器，称为 [Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html)。Route 53 Resolver 自动解析私有托管区域中的本地 VPC 域名和记录。但是，您不能从 VPC 外部使用 Route 53 Resolver。Route 53 提供解析器端点和解析器规则，以便您可从 VPC 外部使用 Route 53 Resolver。*入站解析器端点*将来自本地网络的 DNS 查询转发到 Route 53 Resolver。*出站解析器端点*将来自 Route 53 Resolver 的 DNS 查询转发到本地网络。

当您将 Amazon S3 的接口端点配置为仅对入站解析器端点使用私有 DNS 时，我们会创建入站解析器端点。对于 Amazon S3 的 DNS 查询，入站解析器端点会将其从本地解析到接口端点的私有 IP 地址。我们还将 Route 53 Resolver 的 ALIAS 记录添加到 Amazon S3 的公共托管区域，这样来自 VPC 的 DNS 查询便会解析到 Amazon S3 公有 IP 地址，从而将流量路由到网关端点。

**私有 DNS**  
如果您为 Amazon S3 的接口端点配置私有 DNS，但并非仅为入站解析器端点配置私有 DNS，则来自您的本地网络和 VPC 的请求都使用接口端点访问 Amazon S3。因此，您需要付费使用接口端点处理来自 VPC 的流量，而不是免费使用网关端点。

![\[使用两种端点类型的 Amazon S3 请求路由。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/s3-private-dns-default.png)


**私有 DNS 仅适用于入站解析器端点**  
如果您仅为入站解析器端点配置私有 DNS，则来自您的本地网络的请求会使用接口端点访问 Amazon S3，而来自 VPC 的请求会使用网关端点访问 Amazon S3。因此，您可以优化成本，因为您只需为无法使用网关端点的流量，付费使用接口端点。

要进行此配置，网关终端节点的 DNS 记录 IP 类型必须与接口终端节点相匹配或匹配`service-defined`。 AWS PrivateLink 不支持任何其他组合。有关更多信息，请参阅 [DNS 记录 IP 类型](gateway-endpoints.md#gateway-endpoint-dns-record-ip-type)。

![\[使用私有 DNS 和入站解析器端点的 Amazon S3 请求路由。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/images/s3-private-dns-inbound-endpoint.png)


**配置私有 DNS**  
您可以在创建 Amazon S3 的接口端点时或在创建后，为其配置私有 DNS。有关更多信息，请参阅 [创建 VPC 端点](create-interface-endpoint.md#create-interface-endpoint-aws)（创建期间配置）或 [启用私有 DNS 名称](interface-endpoints.md#enable-private-dns-names)（创建后配置）。

## 创建网关端点
<a name="create-gateway-endpoint-s3"></a>

使用以下过程创建连接到 Amazon S3 的网关端点。

**使用控制台创建网关端点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择 **创建端点**。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于**服务**，添加过滤器**类型 = 网关**。

   如果您的 Amazon S3 数据存储在通用存储桶中，请选择 **com** .amazonaws。 *region***.s3。**

   如果您的 Amazon S3 数据存储在目录存储桶中，请选择 **com** .amazonaws。 *region***.s3express。**

1. 在 **VPC** 选项中，选择要创建端点的 VPC。

1. 对于 **IP address type**（IP 地址类型），可从以下选项中进行选择：
   + **IPv4**— 为端点网络接口分配 IPv4 地址。仅当所有选定的子网都有 IPv4 地址范围并且服务接受 IPv4 请求时，才支持此选项。
   + **IPv6**— 为端点网络接口分配 IPv6 地址。仅当所有选定的子网仅为子网并且服务接受 IPv6 IPv6 请求时，才支持此选项。
   + **Dualstack** — 将 IPv4 和 IPv6 地址分配给端点网络接口。仅当所有选定的子网同时具有 IPv4 和 IPv6 地址范围，并且服务同时接受 IPv4 和 IPv6 请求时，才支持此选项。

1. 对于 **Route tables**（路由表），选择端点要使用的路由表。我们将自动添加一个路由，将以服务为目的地的流量指向端点网络接口。

1. 对于 **Policy**（策略），选择 **Full access**（完全访问权限）以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则，选择 **Custom**（自定义）以附加 VPC 端点策略，该策略控制主体通过 VPC 端点对资源执行操作的权限。

1. （可选）若要添加标签，请选择**添加新标签**，然后输入该标签的键和值。

1. 选择**创建端点**。

**使用命令行创建网关端点**
+ [create-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html) (AWS CLI)
+ [New-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）

## 使用存储桶策略控制访问
<a name="bucket-policies-s3"></a>

您可以使用存储桶策略来控制从特定终端节点、 VPCs、IP 地址范围和 AWS 账户对存储桶的访问。这些示例假设还有一个允许您的使用案例所需访问权限的策略语句。

**Example 示例：限制对特定端点的访问**  
您可以使用 [aws:sourceVpce](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 条件键来创建限制对特定端点的访问的存储桶策略。除非使用了指定的网关端点，否则以下策略会使用指定的操作拒绝对指定桶的访问。请注意，此策略通过 AWS 管理控制台使用指定的操作阻止对指定桶的访问。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-VPCE",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::bucket_name",
                   "arn:aws:s3:::bucket_name/*"],
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpce": "vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```

**Example 示例：限制对特定 VPC 的访问**  
您可以使用 a [ws: Sour](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) ceVPC 条件密钥创建限制访问特定 VPCs 存储桶策略。如果您在同一 VPC 中配置了多个端点，这会非常有用。除非请求来自指定的 VPC，否则以下策略会使用指定的操作拒绝对指定桶的访问。请注意，此策略通过 AWS 管理控制台使用指定的操作阻止对指定桶的访问。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-VPC",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::example_bucket",
                   "arn:aws:s3:::example_bucket/*"],
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpc": "vpc-111bbb22"
        }
      }
    }
  ]
}
```

**Example 示例：限制对特定 IP 地址范围的访问**  
您可以使用 aws[: VpcSourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 条件键创建限制对特定 IP 地址范围的访问的策略。除非请求来自指定的 IP 地址，否则以下策略会使用指定的操作拒绝对指定桶的访问。请注意，此策略通过 AWS 管理控制台使用指定的操作阻止对指定桶的访问。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-VPC-CIDR",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::bucket_name",
                   "arn:aws:s3:::bucket_name/*"],
      "Condition": {
        "NotIpAddress": {
          "aws:VpcSourceIp": "172.31.0.0/16"
        }
      }
    }
  ]
}
```

**Example 示例：限制对特定存储桶的访问权限 AWS 账户**  
您可以使用 `s3:ResourceAccount` 条件键来创建策略，用于限制对特定 AWS 账户 中 S3 存储桶的访问。除非 S3 桶归指定的 AWS 账户所有，否则以下策略会使用指定的操作拒绝对这些桶的访问。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-bucket-in-specific-account",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "s3:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

## 关联路由表
<a name="associate-route-tables-s3"></a>

您可以更改与网关端点关联的路由表。当您关联路由表时，我们将自动添加一个路由，将以服务为目的地的流量指向端点网络接口。当您取消关联路由表时，我们会自动从路由表中删除端点路由。

**使用控制台关联路由表**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择网关端点。

1. 选择 **Actions**、**Manage route tables**。

1. 根据需要选择或取消选择路由表。

1. 选择 **Modify route tables**（修改路由表）。

**使用命令行关联路由表**
+ [modify-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint.html) (AWS CLI)
+ [Edit-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）

## 编辑 VPC 端点策略
<a name="edit-vpc-endpoint-policy-s3"></a>

您可以为网关端点编辑端点策略，以此控制通过端点从 VPC 对 Amazon S3 进行的访问。在更新完端点策略后，您所做的更改可能需要几分钟才能生效。默认策略允许完全访问。有关更多信息，请参阅 [端点策略](vpc-endpoints-access.md)。

**使用控制台更改端点策略**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择网关端点。

1. 依次选择 **Actions**（操作）、**Manage policy**（管理策略）。

1. 选择 **Full Access**（完全访问）以允许对服务进行完全访问，或者选择 **Custom**（自定义）并附加自定义策略。

1. 选择**保存**。

下面是访问 Amazon S3 的端点策略示例。

**Example 示例：限制对特定存储桶的访问**  
您可以创建一个策略来仅允许访问特定 S3 存储桶。如果您的 VPC AWS 服务 中有其他使用 S3 存储桶，则此功能非常有用。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-bucket",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
         "s3:ListBucket",
         "s3:GetObject",
         "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucket_name",
        "arn:aws:s3:::bucket_name/*"
      ]
    }
  ]
}
```

**Example 示例：限制对特定 IAM 角色的访问权限**  
您可以创建限制对特定 IAM 角色的访问权限的策略。必须使用 `aws:PrincipalArn` 向主体授予访问权限。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-IAM-role",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "ArnEquals": {
          "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role_name"
        }
      }
    }
  ]
}
```

**Example 示例：限制对特定账户中用户的访问**  
您可以创建限制对特定账户的访问权限的策略。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow-callers-from-specific-account",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalAccount": "111122223333"
        }
      }
    }
  ]
}
```

## 删除网关端点
<a name="delete-gateway-endpoint-s3"></a>

用完网关端点后可以将其删除。当您删除网关端点时，我们会从子网路由表中删除端点路由。

如果私有 DNS 已启用，则无法删除网关端点。

**使用控制台删除网关端点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择网关端点。

1. 选择 **Actions**（操作）、**Delete VPC Endpoint**（删除 VPC 端点）。

1. 当系统提示进行确认时，输入 **delete**。

1. 选择**删除**。

**使用命令行删除网关端点**
+ [delete-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-vpc-endpoints.html) (AWS CLI)
+ [Remove-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）

# 适用于 Amazon DynamoDB 的网关端点
<a name="vpc-endpoints-ddb"></a>

您可以使用网关 VPC 端点从 VPC 访问 Amazon DynamoDB。创建网关端点后，您可以将其添加为路由表中的目标，用于从您的 VPC 流向 DynamoDB 的流量。

使用网关端点不会发生任何额外费用。

DynamoDB 同时支持网关端点和接口端点。借助网关端点，您可以从 VPC 访问 DynamoDB，而无需为 VPC 配备互联网网关或 NAT 设备，也无需任何额外费用。但是，网关终端节点不允许从本地网络、其他 AWS 区域的对 VPCs 等设备或通过传输网关进行访问。对于这些场景，您必须使用接口端点，后者需要额外付费。有关更多信息，请参阅 *Amazon DynamoDB 开发人员指南*中的 [DynamoDB 的 VPC 端点类型](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-ddb)。

**Topics**
+ [

## 注意事项
](#gateway-endpoint-considerations-ddb)
+ [

## 创建网关端点
](#create-gateway-endpoint-ddb)
+ [

## 使用 IAM policy 控制访问
](#iam-policies-ddb)
+ [

## 关联路由表
](#associate-route-tables-ddb)
+ [

## 编辑 VPC 端点策略
](#edit-vpc-endpoint-policy-ddb)
+ [

## 删除网关端点
](#delete-gateway-endpoint-ddb)

## 注意事项
<a name="gateway-endpoint-considerations-ddb"></a>
+ 网关端点仅在您创建该端点所在的区域可用。确保在 DynamoDB 表所在的相同区域内创建网关端点。
+ 如果您使用的是 Amazon DNS 服务器，则必须为您的 VPC 同时启用 [DNS 主机名和 DNS 解析](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。如果您使用自己的 DNS 服务器，请确保将针对 DynamoDB 的请求正确解析为 AWS维护的 IP 地址。
+ 对于通过网关端点访问 DynamoDB 的实例，安全组的规则必须允许进出 DynamoDB 的流量。您可以在安全组规则中引用 DynamoDB 的[前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)的 ID。
+ 对于通过网关端点访问 DynamoDB 的实例，子网的网络 ACL 必须允许进出 DynamoDB 的流量。您不能在网络 ACL 规则中引用前缀列表，但可以从 DynamoDB 的[前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)中获取 DynamoDB 的 IP 地址范围。
+ 如果您使用 AWS CloudTrail 记录 DynamoDB 操作，则日志文件包含服务使用者 VPC 中 EC2 实例的私有 IP 地址以及通过该终端节点执行的任何请求的网关终端节点的 ID。
+ 网关端点仅支持 IPv4 流量。
+ 来自受影响子网中实例的源 IPv4 地址从公有 IPv4 地址更改为来自您的 VPC 的私有 IPv4 地址。端点将切换网络路由，并断开打开的 TCP 连接。之前使用公共 IPv4 地址的连接不会恢复。建议您在创建或修改网关端点时不要运行任何重要任务。或者，进行测试以确保在连接中断时您的软件能够自动重新连接到 DynamoDB。
+ 无法将端点连接扩展到 VPC 之外。VPN 连接、VPC 对等连接、传输网关或您的 VPC 中 Direct Connect 连接另一端的资源无法使用网关终端节点与 DynamoDB 通信。
+ 您的账户的默认配额为每个区域 20 个网关端点，该配额可调整。每个 VPC 的网关端点限制为 255 个。

## 创建网关端点
<a name="create-gateway-endpoint-ddb"></a>

使用以下过程创建连接到 DynamoDB 的网关端点。

**使用控制台创建网关端点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择 **创建端点**。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于**服务**，添加过滤器 “**类型 = 网关**”，然后选择 **com.** amazonaws。 *region***.dynamodb。**

1. 在 **VPC** 选项中，选择要创建端点的 VPC。

1. 对于 **Route tables**（路由表），选择端点要使用的路由表。我们将自动添加一个路由，将以服务为目的地的流量指向端点网络接口。

1. 对于 **Policy**（策略），选择 **Full access**（完全访问权限）以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则，选择 **Custom**（自定义）以附加 VPC 端点策略，该策略控制主体通过 VPC 端点对资源执行操作的权限。

1. （可选）若要添加标签，请选择**添加新标签**，然后输入该标签的键和值。

1. 选择**创建端点**。

**使用命令行创建网关端点**
+ [create-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html) (AWS CLI)
+ [New-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）

## 使用 IAM policy 控制访问
<a name="iam-policies-ddb"></a>

您可以创建 IAM policy 来控制哪些 IAM 主体可以使用特定的 VPC 端点来访问 DynamoDB 表。

**Example 示例：限制对特定端点的访问**  
您可以使用 [aws:sourceVpce](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 条件键来创建用于限制对特定 VPC 端点的访问的策略。除非使用指定的 VPC 端点，否则以下策略将拒绝对账户中 DynamoDB 表的访问。此示例假设还有一个允许您的使用案例所需访问权限的策略语句。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "Allow-access-from-specific-endpoint",
         "Effect": "Deny",
         "Principal": "*",
         "Action": "dynamodb:*",
         "Resource": "arn:aws:dynamodb:us-east-1:111111111111:table/*",
         "Condition": { 
            "StringNotEquals" : { 
               "aws:sourceVpce": "vpce-11aa22bb" 
            } 
         }
      }
   ]
}
```

**Example 示例：允许来自特定 IAM 角色的访问**  
您可以创建策略，以允许使用特定 IAM 角色进行访问。以下策略将向指定 IAM 角色授予访问权限。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "Allow-access-from-specific-IAM-role",
         "Effect": "Allow",
         "Principal": "*",
         "Action": "*",
         "Resource": "*",
         "Condition": {
            "ArnEquals": {
               "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role_name"
            }
         }
      }
   ]
}
```

**Example 示例：允许来自特定账户的访问**  
您可以创建一个仅允许来自特定账户的访问的策略。以下策略向指定账户中的用户授予访问权限。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "Allow-access-from-account",
         "Effect": "Allow",
         "Principal": "*",
         "Action": "*",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "aws:PrincipalAccount": "111122223333"
            }
         }
      }
   ]        
}
```

## 关联路由表
<a name="associate-route-tables-ddb"></a>

您可以更改与网关端点关联的路由表。当您关联路由表时，我们将自动添加一个路由，将以服务为目的地的流量指向端点网络接口。当您取消关联路由表时，我们会自动从路由表中删除端点路由。

**使用控制台关联路由表**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择网关端点。

1. 选择 **Actions**、**Manage route tables**。

1. 根据需要选择或取消选择路由表。

1. 选择 **Modify route tables**（修改路由表）。

**使用命令行关联路由表**
+ [modify-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint.html) (AWS CLI)
+ [Edit-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）

## 编辑 VPC 端点策略
<a name="edit-vpc-endpoint-policy-ddb"></a>

您可以为网关端点编辑端点策略，以此控制通过端点从 VPC 对 DynamoDB 进行的访问。在更新完端点策略后，您所做的更改可能需要几分钟才能生效。默认策略允许完全访问。有关更多信息，请参阅 [端点策略](vpc-endpoints-access.md)。

**使用控制台更改端点策略**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择网关端点。

1. 依次选择 **Actions**（操作）、**Manage policy**（管理策略）。

1. 选择 **Full Access**（完全访问）以允许对服务进行完全访问，或者选择 **Custom**（自定义）并附加自定义策略。

1. 选择**保存**。

**使用命令行修改网关端点**
+ [modify-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint.html) (AWS CLI)
+ [Edit-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）

下面是访问 DynamoDB 的端点策略示例。

**Example 示例：允许只读访问**  
您可以创建一个将访问限制为只读访问的策略。以下策略授予列出和描述 DynamoDB 表的权限。  

```
{
  "Statement": [
    {
      "Sid": "ReadOnlyAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "dynamodb:DescribeTable",
        "dynamodb:ListTables"
      ],
      "Resource": "*"
    }
  ]
}
```

**Example 示例：限制对特定表的访问权限**  
您可以创建限制对特定 DynamoDB 表的访问权限的策略。以下策略允许对指定 DynamoDB 表的访问。  

```
{
  "Statement": [
    {
      "Sid": "Allow-access-to-specific-table",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "dynamodb:Batch*",
        "dynamodb:Delete*",
        "dynamodb:DescribeTable",
        "dynamodb:GetItem",
        "dynamodb:PutItem",
        "dynamodb:Update*"
      ],
      "Resource": "arn:aws:dynamodb:region:123456789012:table/table_name"
    }
  ]
}
```

## 删除网关端点
<a name="delete-gateway-endpoint-ddb"></a>

用完网关端点后可以将其删除。当您删除网关端点时，我们会从子网路由表中删除端点路由。

**使用控制台删除网关端点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**。

1. 选择网关端点。

1. 选择 **Actions**（操作）、**Delete VPC Endpoint**（删除 VPC 端点）。

1. 当系统提示进行确认时，输入 **delete**。

1. 选择**删除**。

**使用命令行删除网关端点**
+ [delete-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-vpc-endpoints.html) (AWS CLI)
+ [Remove-EC2VpcEndpoint](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2VpcEndpoint.html)（适用于 Windows 的工具 PowerShell）