

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

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

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

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

DynamoDB 同时支持网关端点和接口端点。借助网关端点，您可以从 VPC 访问 DynamoDB，而无需为 VPC 配备互联网网关或 NAT 设备，也无需任何额外费用。但是，网关终端节点不允许从本地网络、其他 Amazon 区域的对 VPCs 等设备或通过传输网关进行访问。对于这些场景，您必须使用接口端点，后者需要额外付费。有关更多信息，请参阅 *Amazon DynamoDB 开发人员指南*中的 [DynamoDB 的 VPC 端点类型](https://docs.amazonaws.cn/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.amazonaws.cn/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。如果您使用自己的 DNS 服务器，请确保将针对 DynamoDB 的请求正确解析为 Amazon维护的 IP 地址。
+ 对于通过网关端点访问 DynamoDB 的实例，安全组的规则必须允许进出 DynamoDB 的流量。您可以在安全组规则中引用 DynamoDB 的[前缀列表](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)的 ID。
+ 对于通过网关端点访问 DynamoDB 的实例，子网的网络 ACL 必须允许进出 DynamoDB 的流量。您不能在网络 ACL 规则中引用前缀列表，但可以从 DynamoDB 的[前缀列表](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)中获取 DynamoDB 的 IP 地址范围。
+ 如果您使用 Amazon CloudTrail 记录 DynamoDB 操作，则日志文件包含服务使用者 VPC 中 EC2 实例的私有 IP 地址以及通过该终端节点执行的任何请求的网关终端节点的 ID。
+ 网关端点仅支持 IPv4 流量。
+ 来自受影响子网中实例的源 IPv4 地址从公有 IPv4 地址更改为来自您的 VPC 的私有 IPv4 地址。端点将切换网络路由，并断开打开的 TCP 连接。之前使用公共 IPv4 地址的连接不会恢复。建议您在创建或修改网关端点时不要运行任何重要任务。或者，进行测试以确保在连接中断时您的软件能够自动重新连接到 DynamoDB。
+ 无法将端点连接扩展到 VPC 之外。VPN 连接、VPC 对等连接、传输网关或您的 VPC 中 Amazon Direct Connect 连接另一端的资源无法使用网关终端节点与 DynamoDB 通信。
+ 您的账户的默认配额为每个区域 20 个网关端点，该配额可调整。每个 VPC 的网关端点限制为 255 个。

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

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

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

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

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

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

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

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.amazonaws.cn/cli/latest/reference/ec2/create-vpc-endpoint.html) (Amazon CLI)
+ [New-EC2VpcEndpoint](https://docs.amazonaws.cn/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.amazonaws.cn/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.amazonaws.cn/vpc/) 的 Amazon VPC 控制台。

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

1. 选择网关端点。

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

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

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

**使用命令行关联路由表**
+ [modify-vpc-endpoint](https://docs.amazonaws.cn/cli/latest/reference/ec2/modify-vpc-endpoint.html) (Amazon CLI)
+ [Edit-EC2VpcEndpoint](https://docs.amazonaws.cn/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.amazonaws.cn/vpc/) 的 Amazon VPC 控制台。

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

1. 选择网关端点。

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

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

1. 选择**保存**。

**使用命令行修改网关端点**
+ [modify-vpc-endpoint](https://docs.amazonaws.cn/cli/latest/reference/ec2/modify-vpc-endpoint.html) (Amazon CLI)
+ [Edit-EC2VpcEndpoint](https://docs.amazonaws.cn/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.amazonaws.cn/vpc/) 的 Amazon VPC 控制台。

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

1. 选择网关端点。

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

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

1. 选择**删除**。

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