本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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。
许多客户对跨公共 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。
共享 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 终端节点。
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
选择启动实例,然后执行以下操作:
步骤 1:选择 Amazon 系统映像 (AMI)
-
在 AMI 列表的顶部,转至 Amazon Linux AMI,然后选择 Select (选择)。
步骤 2:选择实例类型
-
在实例类型列表的顶部,选择 t2.micro。
-
选择下一步:配置实例详细信息。
步骤 3:配置实例详细信息
-
转至 Network (网络) 并选择您的默认 VPC。
选择下一步:添加存储。
步骤 4:添加存储
-
通过选择 Next: Tag Instance 来跳过此步骤。
第 5 步:为实例添加标签
-
选择下一步:配置安全组,跳过此步骤。
步骤 6:配置安全组
-
选择选择现有安全组。
-
在安全组列表中,选择默认。这是 VPC 的默认安全组。
-
选择下一步:审核和启动。
步骤 7:查看实例启动
-
选择启动。
-
-
在选择现有密钥对或创建新密钥对窗口中,执行下列操作之一:
-
如果您没有 Amazon EC2 密钥对,请选择创建新的密钥对并遵循说明。系统将要求您下载私有密钥文件 (.pem 文件);您在登录 Amazon EC2 实例时需要此文件。
-
如果您现在已有 Amazon EC2 密钥对,请转至选择密钥对,然后从列表中选择您的密钥对。您必须有可用的私有密钥文件 (.pem 文件) 才能登录 Amazon EC2 实例。
-
-
在配置密钥对后,选择 Launch Instances (启动实例)。
-
返回 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 实例。
-
您需要授权您的 Amazon EC2 实例的入站 SSH 流量。为此,您将创建一个新的 EC2 安全组,然后将该安全组分配给您的 EC2 实例。
-
在导航窗格中,选择安全组。
-
选择创建安全组。在创建安全组窗口中,执行以下操作:
-
安全组名称—键入安全组名称。例如:
my-ssh-access
。 -
说明—键入新安全组的描述。
-
VPC—选择您的默认 VPC。
-
在安全组规则部分,选择添加规则并执行以下操作:
-
类型-选择 SSH。
-
来源—选择我的 IP。
-
根据需要进行设置后,选择 Create(创建)。
-
-
在导航窗格中,选择 实例。
-
选择在 第 1 步:启动一个 Amazon EC2 实例 中启动的 Amazon EC2 实例。
-
选择操作 --> 联网 --> 更改安全组。
-
在更改安全组中,选择您在此过程之前创建的安全组(例如:
my-ssh-access
)。还应选择现有default
安全组。根据需要进行设置后,选择分配安全组。
-
-
使用
ssh
命令登录您的 Amazon EC2 实例,如以下示例所示。ssh -i
my-keypair.pem
ec2-user@public-dns-name
您需要指定私有密钥文件(.pem 文件)和实例的公有 DNS 名称。(请参阅 第 1 步:启动一个 Amazon EC2 实例。)
登录 ID 为
ec2-user
。不需要密码。 -
配置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 终端节点,并对其进行测试以确保其正常工作。
-
在开始之前,请验证您是否可以使用 DynamoDB 的公共终端节点与 DynamoDB 进行通信。
aws dynamodb list-tables
输出将显示您当前拥有的 DynamoDB 表的列表。(如果您没有任何表,该列表将为空。)
-
验证 DynamoDB 是否可用于在当前Amazon区域创建 VPC 端点。(命令以粗体文本显示,后面是示例输出。)
aws ec2 describe-vpc-endpoint-services
{ "ServiceNames": [ "com.amazonaws.us-east-1.s3", "com.amazonaws.us-east-1.dynamodb" ] }在示例输出中,DynamoDB 是可用的服务之一,因此您可以继续为其创建 VPC 终端节点。
-
确定您的 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
。 -
创建 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" } } -
验证您是否可以通过 VPC 终端节点访问 DynamoDB。
aws dynamodb list-tables
如果需要,您可以为 DynamoDB 尝试其他 Amazon CLI 命令。有关更多信息,请参阅 Amazon CLI 命令参考。
第 4 步:(可选)清除
如果要删除您在本教程中创建的资源,请按照以下步骤操作:
删除用于 DynamoDB 的 VPC 终端节点
-
登录到您的 Amazon EC2 实例。
-
确定 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
。 -
删除 VPC 终端节点。
aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
{ "Unsuccessful": [] }空数组
[]
表示成功(没有失败请求)。
终止 Amazon EC2 实例
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择 Instances (实例)。
-
选择您的 Amazon EC2 实例。
-
依次选择 Actions(操作)、Instance State(实例状态)和 Terminate(终止)。
-
在确认窗口中,选择是,终止。