Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

DynamoDB 的 Amazon VPC 终端节点

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

注意

如果您的 AWS 账户是在 2013-12-04 之后创建的,则您在每个 AWS 区域中都已经有一个默认 VPC。一个默认 VPC 已经可供您使用 - 您可立即开始使用默认 VPC 而无需执行任何额外配置步骤。

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

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

默认情况下,与 DynamoDB 的通信将使用 HTTPS 协议,该协议使用 SSL/TLS 加密保护网络流量。下图说明 VPC 中的 EC2 实例如何访问 DynamoDB:

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

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

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

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

教程:使用 DynamoDB 的 VPC 终端节点

本部分介绍如何设置和使用 DynamoDB 的 VPC 终端节点。

步骤 1:启动 Amazon EC2 实例

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

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

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

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

    步骤 2:选择实例类型

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

    • 选择 Next: Configure Instance Details

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

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

      选择 Next: Add Storage

    步骤 4:添加存储

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

    步骤 5:标记实例

    • 通过选择 Next: Configure Security Group 来跳过此步骤。

    步骤 6:配置安全组

    • 选择 Select an existing security group

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

    • 选择 Next: Review and Launch

    步骤 7:查看实例启动

    • 选择 Launch

  3. Select an existing key pair or create a new key pair 窗口中,执行下列操作之一:

    • 如果您没有 Amazon EC2 密钥对,请选择 Create a new key pair (创建新的密钥对) 并按说明操作。系统将要求您下载私有密钥文件(.pem 文件);稍后在您登录 Amazon EC2 实例时将需要此文件。

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

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

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

    记下此公有 DNS 名称,因为您在本教程的下一个步骤中将需要此名称 (步骤 2:配置您的 Amazon EC2 实例)。

注意

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

步骤 2:配置您的 Amazon EC2 实例

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

注意

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

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

    1. 在导航窗格中,选择 Security Groups

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

      • Security group name (安全组名称) — 键入您的安全组的名称。例如:my-ssh-access

      • Description (描述) — 键入安全组的简短描述。

      • VPC — 选择您的默认 VPC。

      • Security group rules (安全组规则) 部分中,选择 Add Rule (添加规则) 并执行以下操作:

        • Type (类型) — 选择 SSH。

        • Source (源) — 选择“My IP (我的 IP)”。

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

    3. 在导航窗格中,选择 Instances

    4. 选择您在步骤 1:启动 Amazon EC2 实例中启动的 Amazon EC2 实例。

    5. 选择 Actions (操作) --> Networking (联网) --> Change Security Groups (更改安全组)

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

  2. 使用 ssh 命令登录您的 Amazon EC2 实例。例如:

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

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

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

  3. 配置 AWS 凭证,如下所示。系统提示时,输入您的 AWS 访问密钥 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 的公有终端节点与其进行通信:

    aws dynamodb list-tables

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

  2. 验证 DynamoDB 是否为可在当前 AWS 区域中创建 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。

    aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb { "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" } }
  5. 验证您是否能通过 VPC 终端节点访问 DynamoDB:

    aws dynamodb list-tables

    如果需要,您可以尝试对 DynamoDB 使用一些其他 AWS CLI 命令。有关更多信息,请参见 AWS CLI Command Reference

步骤 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.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Instances

  3. 选择您的 Amazon EC2 实例。

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

  5. 在确认窗口中,选择 Yes, Terminate (是,终止)