适用于 Amazon DynamoDB 的网关端点 - Amazon Virtual Private Cloud

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

适用于 Amazon DynamoDB 的网关端点

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

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

DynamoDB 同时支持网关终端节点和接口终端节点。使用网关终端节点,您可以从您的 VPC 访问 DynamoDB,无需为 VPC 使用互联网网关或 NAT 设备,也无需支付额外费用。但是,网关终端节点不允许从本地网络、其他 AWS 区域的对等 VPC 或通过传输网关进行访问。对于这些场景,您必须使用接口端点,后者需要额外付费。有关更多信息,请参阅《亚马逊 DynamoDB 开发者指南》中的 DynamoDB 的 VPC 终端节点类型

注意事项

  • 网关端点仅在您创建该端点所在的区域可用。确保在 DynamoDB 表所在的相同区域内创建网关端点。

  • 如果您使用的是 Amazon DNS 服务器,则必须为您的 VPC 同时启用 DNS 主机名和 DNS 解析。如果您使用自己的 DNS 服务器,请确保将针对 DynamoDB 的请求正确解析为 AWS维护的 IP 地址。

  • 对于通过网关端点访问 DynamoDB 的实例,安全组的规则必须允许进出 DynamoDB 的流量。您可以在安全组规则中引用 DynamoDB 的前缀列表的 ID。

  • 对于通过网关端点访问 DynamoDB 的实例,子网的网络 ACL 必须允许进出 DynamoDB 的流量。您不能在网络 ACL 规则中引用前缀列表,但可以从 DynamoDB 的前缀列表中获取 DynamoDB 的 IP 地址范围。

  • 如果您使用 AWS CloudTrail 记录 DynamoDB 操作,则日志文件包含服务使用者 VPC 中 EC2 实例的私有 IP 地址以及通过该终端节点执行的任何请求的网关终端节点的 ID。

  • 网关端点仅支持 IPv4 流量。

  • 您的受影响子网中实例的源 IPv4 地址将从公有 IPv4 地址变为您的 VPC 中的私有 IPv4 地址。端点将切换网络路由,并断开打开的 TCP 连接。以前使用公有 IPv4 地址的连接不会恢复。建议您在创建或修改网关端点时不要运行任何重要任务。或者,进行测试以确保在连接中断时您的软件能够自动重新连接到 DynamoDB。

  • 无法将端点连接扩展到 VPC 之外。VPN 连接、VPC 对等连接、传输网关或您的 VPC 中 AWS Direct Connect 连接另一端的资源无法使用网关终端节点与 DynamoDB 通信。

  • 您的账户的默认配额为每个区域 20 个网关端点,该配额可调整。每个 VPC 的网关端点限制为 255 个。

创建网关端点

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

使用控制台创建网关端点
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Endpoints(端点)。

  3. 选择 创建端点

  4. 对于 Service category(服务类别),选择 AWS 服务

  5. 对于 Services(服务),添加筛选条件 Type: Gateway(类型:网关),然后选择 com.amazonaws.region.dynamodb

  6. VPC 选项中,选择要创建端点的 VPC。

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

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

  9. (可选)若要添加标签,请选择 Add new tag(添加新标签),然后输入该标签的键和值。

  10. 选择创建端点

使用命令行创建网关端点

使用 IAM policy 控制访问

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

例 示例:限制对特定端点的访问

您可以使用 aws:sourceVpce 条件键来创建用于限制对特定 VPC 端点的访问的策略。除非使用指定的 VPC 端点,否则以下策略将拒绝对账户中 DynamoDB 表的访问。此示例假设还有一个允许您的使用案例所需访问权限的策略语句。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-from-specific-endpoint", "Effect": "Deny", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:region:account-id:table/*", "Condition": { "StringNotEquals" : { "aws:sourceVpce": "vpce-11aa22bb" } } } ] }
例 示例:允许来自特定 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" } } } ] }
例 示例:允许来自特定账户的访问

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

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

关联路由表

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

使用控制台关联路由表
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择网关端点。

  4. 选择 ActionsManage route tables

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

  6. 选择 Modify route tables(修改路由表)。

使用命令行关联路由表

编辑 VPC 端点策略

您可以为网关端点编辑端点策略,以此控制通过端点从 VPC 对 DynamoDB 进行的访问。默认策略允许完全访问。有关更多信息,请参阅 端点策略

使用控制台更改端点策略
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择网关端点。

  4. 依次选择 Actions(操作)、Manage policy(管理策略)。

  5. 选择 Full Access(完全访问)以允许对服务进行完全访问,或者选择 Custom(自定义)并附加自定义策略。

  6. 选择保存

使用命令行修改网关端点

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

例 示例:允许只读访问

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

{ "Statement": [ { "Sid": "ReadOnlyAccess", "Effect": "Allow", "Principal": "*", "Action": [ "dynamodb:DescribeTable", "dynamodb:ListTables" ], "Resource": "*" } ] }
例 示例:限制对特定表的访问权限

您可以创建限制对特定 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" } ] }

删除网关端点

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

使用控制台删除网关端点
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择网关端点。

  4. 选择 Actions(操作)、Delete VPC Endpoint(删除 VPC 端点)。

  5. 当系统提示进行确认时,输入 delete

  6. 选择 Delete (删除)

使用命令行删除网关端点