使用 Amazon VPC 端点来访问 DynamoDB - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon VPC 端点来访问 DynamoDB

出于安全原因,许多Amazon客户在 Amazon Virtual Private Cloud 环境(Amazon VPC)中运行其应用程序。利用 Amazon VPC,您可以在 Virtual Private Cloud 中启动 Amazon EC2 实例,Virtual Private Cloud 在逻辑上与其他网络(包括公共互联网)隔离。利用 Amazon VPC,您可以控制该网络的 IP 地址范围、子网、路由表、网络网关和安全设置。

注意

如果您在 2013 年 12 月 4 日Amazon Web Services 账户之后创建的,则每个 VPC 中都已有一个默认 VPC Amazon Web Services 区域。默认 VPC 可供您使用,您立即开始使用该 VPC,而无需执行任何其他配置步骤。

有关默认 VPC 的更多信息,请参阅 Amazon VPC 用户指南中的默认 VPC 和默认子网

要访问公共互联网,您的 VPC 必须有一个互联网网关 — 一个将您的 VPC 连接到互联网的虚拟路由器。这允许在 VPC 中的 Amazon EC2 上运行的应用程序访问互联网资源,例如 Amazon DynamoDB。

默认情况下,与 DynamoDB 之间的通信使用 HTTPS 协议,该协议通过使用 SSL/TLS 加密来保护网络流量。下图显示了 VPC 中的 Amazon EC2 实例通过让 DynamoDB 使用互联网网关而不是 VPC 终端节点来访问 DynamoDB。


            工作流程图显示了 Amazon EC2 实例通过路由器、互联网网关和互联网访问 DynamoDB。

许多客户对跨公共 Internet 发送和接收数据存在合理的私密性和安全性担心。客户可以利用虚拟专用网络 (VPN),通过自己的企业网络基础设施路由所有 DynamoDB 网络流量,从而消除这些担心。不过,此方法可能会带来带宽和可用性方面的难题。

DynamoDB 的 VPC 终端节点可以克服这些难题。DynamoDB 的 VPC 终端节点使 VPC 中的 Amazon EC2 实例可以使用其私有 IP 地址访问 DynamoDB,而无需接触公共互联网。EC2 实例不需要公有 IP 地址,因此您的 VPC 中不需要有互联网网关、NAT 设备或虚拟专用网关。您使用终端节点策略控制对 DynamoDB 的访问。您的 VPC 和 Amazon 服务之间的流量不会脱离 Amazon 网络。

注意

即使您使用公有 IP 地址,实例与托管在中的服务之间的所有 VPC 通信Amazon也会在Amazon网络中保持私密性。来自 Amazon 网络且目的地在 Amazon 网络上的数据包会留在 Amazon 全球网络上,但来往于 Amazon 中国区域的流量除外。

在为 DynamoDB 创建 VPC 终端节点时,发送到区域(如 dynamodb.us-west-2.amazonaws.com)内的 DynamoDB 终端节点的任何请求都被路由到 Amazon 网络中的私有 DynamoDB 终端节点。您无需修改在 VPC 中的 EC2 实例上运行的应用程序。您不需要修改正在 VPC 中的 EC2 实例上运行的应用程序 终端节点名称保持不变,但到 DynamoDB 的路由会完全保留在 Amazon 网络中,不会访问公共互联网。

下图说明 VPC 中的 EC2 实例如何使用 VPC 终端节点访问 DynamoDB。


            显示仅通过路由器和 VPC 终端节点访问 DynamoDB 的 EC2 实例的工作流程图。

有关更多信息,请参见 教程:将 VPC 端点用于 DynamoDB

共享 Amazon VPC 端点和 DynamoDB

要允许通过 VPC 子网的网关端点访问 DynamoDB 服务,您必须拥有该 VPC 子网的所有者账户权限。

向 VPC 子网的网关端点授予对 DynamoDB 的访问权限后,任何有权访问该子网的 Amazon 账户都可以使用 DynamoDB。这意味着 VPC 子网中的所有账户用户都可以使用他们有权访问的任何 DynamoDB 表。这包括与 VPC 子网以外的账户相关联的 DynamoDB 表。VPC 子网所有者仍然可以自行决定,限制子网内的任何特定用户通过网关端点使用 DynamoDB 服务。

教程:将 VPC 端点用于 DynamoDB

此部分引导您完成设置和使用 DynamoDB 的 VPC 终端节点的过程。

第 1 步:启动一个 Amazon EC2 实例

在此步骤中,您将在默认 Amazon VPC 中启动 Amazon EC2 实例。然后,您可以为 DynamoDB 创建和使用 VPC 终端节点。

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择启动实例,然后执行以下操作:

    步骤 1:选择 Amazon 系统映像 (AMI)

    • 在 AMI 列表的顶部,转至 Amazon Linux AMI,然后选择 Select (选择)

    步骤 2:选择实例类型

    • 在实例类型列表的顶部,选择 t2.micro

    • 选择下一步:配置实例详细信息

    步骤 3:配置实例详细信息

    • 转至 Network (网络) 并选择您的默认 VPC。

      选择下一步:添加存储

    步骤 4:添加存储

    • 通过选择 Next: Tag Instance 来跳过此步骤。

    第 5 步:为实例添加标签

    • 选择下一步:配置安全组,跳过此步骤。

    步骤 6:配置安全组

    • 选择选择现有安全组

    • 在安全组列表中,选择默认。这是 VPC 的默认安全组。

    • 选择下一步:审核和启动

    步骤 7:查看实例启动

    • 选择启动

  3. 选择现有密钥对或创建新密钥对窗口中,执行下列操作之一:

    • 如果您没有 Amazon EC2 密钥对,请选择创建新的密钥对并遵循说明。系统将要求您下载私有密钥文件 (.pem 文件);您在登录 Amazon EC2 实例时需要此文件。

    • 如果您现在已有 Amazon EC2 密钥对,请转至选择密钥对,然后从列表中选择您的密钥对。您必须有可用的私有密钥文件 (.pem 文件) 才能登录 Amazon EC2 实例。

  4. 在配置密钥对后,选择 Launch Instances (启动实例)

  5. 返回 Amazon EC2 控制台主页并选择您启动的实例。在下方窗格中的说明选项卡上,找到实例的公共 DNS。例如:ec2-00-00-00-00.us-east-1.compute.amazonaws.com

    记下此公共 DNS 名称,因为您需要在本教程的下一步中使用该名称 (第 2 步:配置 Amazon EC2 实例)。

注意

您的 Amazon EC2 实例需要几分钟才能变为可用。在继续下一步之前,请确保实例状态running,并且已通过其所有状态检查

第 2 步:配置 Amazon EC2 实例

当您的 Amazon EC2 实例可用时,您将能够登录该实例并为首次使用做好准备。

注意

以下步骤假设您从运行 Linux 的计算机连接到您的 Amazon EC2 实例。有关连接到 Linux 实例的其他方式,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的连接到您的 Linux 实例

  1. 您需要授权您的 Amazon EC2 实例的入站 SSH 流量。为此,您将创建一个新的 EC2 安全组,然后将该安全组分配给您的 EC2 实例。

    1. 在导航窗格中,选择安全组

    2. 选择创建安全组。在创建安全组窗口中,执行以下操作:

      • 安全组名称—键入安全组名称。例如:my-ssh-access

      • 说明—键入新安全组的描述。

      • VPC—选择您的默认 VPC。

      • 安全组规则部分,选择添加规则并执行以下操作:

        • 类型-选择 SSH。

        • 来源—选择我的 IP。

      根据需要进行设置后,选择 Create(创建)。

    3. 在导航窗格中,选择 实例

    4. 选择在 第 1 步:启动一个 Amazon EC2 实例 中启动的 Amazon EC2 实例。

    5. 选择操作 --> 联网 --> 更改安全组

    6. 更改安全组中,选择您在此过程之前创建的安全组(例如:my-ssh-access)。还应选择现有 default 安全组。根据需要进行设置后,选择分配安全组

  2. 使用 ssh 命令登录您的 Amazon EC2 实例,如以下示例所示。

    ssh -i my-keypair.pem ec2-user@public-dns-name

    您需要指定私有密钥文件(.pem 文件)和实例的公有 DNS 名称。(请参阅 第 1 步:启动一个 Amazon EC2 实例。)

    登录 ID 为 ec2-user。不需要密码。

  3. 配置Amazon凭据,如下所示。提示后,输入您的Amazon访问密钥 ID、私有密钥和默认区域名称。

    aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1 Default output format [None]:

现在,您可以为 DynamoDB 创建 VPC 终端节点。

第 3 步:为 DynamoDB 创建一个 VPC 端点

在此步骤中,您将为 DynamoDB 创建 VPC 终端节点,并对其进行测试以确保其正常工作。

  1. 在开始之前,请验证您是否可以使用 DynamoDB 的公共终端节点与 DynamoDB 进行通信。

    aws dynamodb list-tables

    输出将显示您当前拥有的 DynamoDB 表的列表。(如果您没有任何表,该列表将为空。)

  2. 验证 DynamoDB 是否可用于在当前Amazon区域创建 VPC 端点。(命令以粗体文本显示,后面是示例输出。)

    aws ec2 describe-vpc-endpoint-services { "ServiceNames": [ "com.amazonaws.us-east-1.s3", "com.amazonaws.us-east-1.dynamodb" ] }

    在示例输出中,DynamoDB 是可用的服务之一,因此您可以继续为其创建 VPC 终端节点。

  3. 确定您的 VPC 标识符。

    aws ec2 describe-vpcs { "Vpcs": [ { "VpcId": "vpc-0bbc736e", "InstanceTenancy": "default", "State": "available", "DhcpOptionsId": "dopt-8454b7e1", "CidrBlock": "172.31.0.0/16", "IsDefault": true } ] }

    在示例输出中,VPC ID 为 vpc-0bbc736e

  4. 创建 VPC 终端节点。对于 --vpc-id 参数,指定上一步中的 VPC ID。使用 --route-table-ids 参数将终端节点与路由表相关联。

    aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb { "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [ "rtb-11aa22bb" ], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }
  5. 验证您是否可以通过 VPC 终端节点访问 DynamoDB。

    aws dynamodb list-tables

    如果需要,您可以为 DynamoDB 尝试其他 Amazon CLI 命令。有关更多信息,请参阅 Amazon CLI 命令参考

第 4 步:(可选)清除

如果要删除您在本教程中创建的资源,请按照以下步骤操作:

删除用于 DynamoDB 的 VPC 终端节点
  1. 登录到您的 Amazon EC2 实例。

  2. 确定 VPC 终端节点 ID。

    aws ec2 describe-vpc-endpoints { "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }

    在示例输出中,VPC 终端节点 ID 为vpce-9b15e2f2

  3. 删除 VPC 终端节点。

    aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2 { "Unsuccessful": [] }

    空数组 [] 表示成功(没有失败请求)。

终止 Amazon EC2 实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Instances (实例)

  3. 选择您的 Amazon EC2 实例。

  4. 依次选择 Actions(操作)、Instance State(实例状态)和 Terminate(终止)。

  5. 在确认窗口中,选择是,终止