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

适用于 DynamoDB 的 Amazon PrivateLink

借助适用于 DynamoDB 的 Amazon PrivateLink,您可以在 Virtual Private Cloud(Amazon VPC)中预置接口 Amazon VPC 端点(接口端点)。这些端点可从本地(通过 Amazon Direct Connect)或其它 Amazon Web Services 区域(通过 Amazon VPC 对等连接)中的应用程序直接访问。使用 Amazon PrivateLink 和接口端点,您可以简化应用程序与 DynamoDB 之间的私有网络连接。

VPC 中的应用程序无需公有 IP 地址即可与 DynamoDB 接口 VPC 端点进行通信来执行 DynamoDB 操作。接口端点由一个或多个弹性网络接口(ENI)表示,这些接口是从 Amazon VPC 中的子网分配的私有 IP 地址。通过接口端点向 DynamoDB 发出的请求仍留在 Amazon 网络上。您还可以通过 Amazon Direct Connect 从本地部署应用程序访问 Amazon VPC 中的接口端点。有关如何将 Amazon VPC 与本地网络连接的更多信息,请参阅 Amazon Direct Connect 用户指南

有关接口端点的一般信息,请参阅《Amazon PrivateLink 指南》中的接口 Amazon VPC 端点(Amazon PrivateLink)

适用于 Amazon DynamoDB 的 Amazon VPC 端点类型

您可以使用两种类型的 Amazon VPC 端点访问 Amazon DynamoDB:网关端点接口端点(使用 Amazon PrivateLink)。网关端点是您在路由表中指定的网关,用于通过 Amazon 网络从 Amazon VPC 访问 DynamoDB。接口端点通过私有 IP 地址将请求从您的 Amazon VPC 内部、本地或其它 Amazon Web Services 区域中的 Amazon VPC,使用 Amazon VPC 对等连接或 Amazon Transit Gateway 路由到 DynamoDB,从而扩展网关端点的功能。有关更多信息,请参阅 What is Amazon VPC peering?Transit Gateway 与 Amazon VPC 对等连接

接口端点与网关端点兼容。如果您在 Amazon VPC 中有现有网关端点,则可以在同一 Amazon VPC 中使用这两种类型的端点。

适用于 DynamoDB 的网关端点

适用于 DynamoDB 的接口端点

在这两种情况下,您的网络流量仍保留在 Amazon 网络中。

使用 Amazon DynamoDB 公有 IP 地址

使用 Amazon VPC 中的私有 IP 地址访问 Amazon DynamoDB

不允许从本地访问

允许从本地访问

不允许从其他 Amazon Web Services 区域访问

允许从另一个 Amazon Web Services 区域中的 Amazon VPC 端点使用 Amazon VPC 对等连接或 Amazon Transit Gateway 进行访问

不计费

计费

有关网关端点的更多信息,请参阅《Amazon PrivateLink 指南》中的网关 Amazon VPC 端点

适用于 Amazon DynamoDB 的 Amazon PrivateLink 的适用 Amazon VPC 注意事项。有关更多信息,请参阅《Amazon PrivateLink 指南》中的接口端点注意事项Amazon PrivateLink 限额。此外,以下限制将适用:

适用于 Amazon DynamoDB 的 Amazon PrivateLink 不支持以下各项:

Amazon PrivateLink 目前不支持 Amazon DynamoDB Streams 端点。

对于您启用的每个 Amazon PrivateLink 端点,您每秒最多可以提交 5 万个请求。

注意

Amazon PrivateLink 端点的网络连接超时不在 DynamoDB 错误响应的范围内,需要由连接到 PrivateLink 端点的应用程序适当进行处理。

创建 Amazon VPC 端点

要创建 Amazon VPC 接口端点,请参阅《Amazon PrivateLink 指南》中的创建 Amazon VPC 端点

访问 Amazon DynamoDB 接口端点

创建接口端点时,DynamoDB 会生成两种特定于端点的 DynamoDB DNS 名称:区域地区

  • 区域 DNS 名称包括唯一的 Amazon VPC 端点 ID、服务标识符、Amazon Web Services 区域和以其命名的 vpce.amazonaws.com。例如,对于 Amazon VPC 端点 ID vpce-1a2b3c4d,生成的 DNS 名称可能类似于 vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com

  • 区域 DNS 名称包括可用区 – 例如 vpce-1a2b3c4d-5e6f-us-east-1a.dynamodb.us-east-1.vpce.amazonaws.com。如果您的架构隔离了可用区,则可以使用此选项。例如,您可以将其用于故障控制或降低区域数据传输成本。

可以从 DynamoDB 公有 DNS 域解析特定于端点的 DynamoDB DNS 名称。

从 DynamoDB 接口端点访问 DynamoDB 表并控制 API 操作

您可以使用 Amazon CLI 或 Amazon SDK 通过 DynamoDB 接口端点访问 DynamoDB 表并控制 API 操作。

要使用 Amazon CLI 命令通过 DynamoDB 接口端点访问 DynamoDB 表或 DynamoDB 控制 API 操作,请使用 --region--endpoint-url 参数。

示例:创建 VPC 端点

aws ec2 create-vpc-endpoint \ --region us-east-1 \ --service-name dynamodb-service-name \ --vpc-id client-vpc-id \ --subnet-ids client-subnet-id \ --vpc-endpoint-type Interface \ --security-group-ids client-sg-id

示例:修改 VPC 端点

aws ec2 modify-vpc-endpoint \ --region us-east-1 \ --vpc-endpoint-id client-vpc-endpoint-id \ --policy-document policy-document \ #example optional parameter --add-security-group-ids security-group-ids \ #example optional parameter # any additional parameters needed, see Privatelink documentation for more details

示例:使用端点 URL 列出表

在以下示例中,将区域 us-east-1 和 VPC 端点 ID vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com 的 DNS 名称替换为您自己的信息。

aws dynamodb --region us-east-1 —endpoint https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com list-tables

要在使用 Amazon SDK 时通过 DynamoDB 接口端点访问 DynamoDB 表或 DynamoDB 控制 API 操作,请将 SDK 更新为最新版本。然后,将客户端配置为使用端点 URL 通过 DynamoDB 接口端点访问表或 DynamoDB 控制 API 操作。

SDK for Python (Boto3)
示例:使用端点 URL 访问 DynamoDB 表

在以下示例中,将区域 us-east-1 和 VPC 端点 ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com 替换为您自己的信息。

ddb_client = session.client( service_name='dynamodb', region_name='us-east-1', endpoint_url='https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com' )
SDK for Java 1.x
示例:使用端点 URL 访问 DynamoDB 表

在以下示例中,将区域 us-east-1 和 VPC 端点 ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com 替换为您自己的信息。

//client build with endpoint config final AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build();
SDK for Java 2.x
示例:使用端点 URL 访问 S3 存储桶

在以下示例中,将区域 us-east-1 和 VPC 端点 ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com 替换为您自己的信息。

Region region = Region.US_EAST_1; dynamoDbClient = DynamoDbClient.builder().region(region) .endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com")) .build()

更新本地 DNS 配置

使用特定于端点的 DNS 名称访问适用于 DynamoDB 的接口端点时,您无需更新本地 DNS 解析程序。您可以使用来自公有 DynamoDB DNS 域的接口端点的私有 IP 地址解析特定于端点的 DNS 名称。

使用接口端点访问 DynamoDB,无需 Amazon VPC 中的网关端点和互联网网关

Amazon VPC 中的接口端点可以通过 Amazon 网络将 Amazon VPC 内的应用程序和本地应用程序路由到 DynamoDB,如下图所示。


          数据流程图,显示了使用接口端点和 Amazon PrivateLink 从本地和 Amazon VPC 内的应用程序对 DynamoDB 的访问。

该图阐释了以下内容:

  • 您的本地网络使用 Amazon Direct Connect 连接到 Amazon VPC A。

  • 本地和 Amazon VPC A 中的应用程序使用特定于端点的 DNS 名称通过 DynamoDB 接口端点访问 DynamoDB。

  • 本地应用程序通过 Amazon Direct Connect 将数据发送到 Amazon VPC 中的接口端点。Amazon PrivateLink 通过 Amazon 网络将数据从接口端点移动到 DynamoDB。

  • Amazon VPC 中的应用程序还向接口端点发送通信。Amazon PrivateLink 通过 Amazon 网络将数据从接口端点移动到 DynamoDB。

在同一 Amazon VPC 中同时使用网关端点和接口端点来访问 DynamoDB

您可以创建接口端点并将现有网关端点保留在同一 Amazon VPC 中,如下图所示。通过这种方法,您可以允许 Amazon VPC 内的应用程序继续通过网关端点访问 DynamoDB,而无需付费。然后,只有您的本地应用程序才会使用接口端点访问 DynamoDB。要通过这种方式访问 DynamoDB,您必须更新本地应用程序,以使用适用于 DynamoDB 的特定于端点的 DNS 名称。


          数据流程图,显示了同时使用网关端点和接口端点访问 DynamoDB 的情况。

该图阐释了以下内容:

  • 本地应用程序使用特定于端点的 DNS 名称通过 Amazon Direct Connect 将数据发送到 Amazon VPC 中的接口端点。Amazon PrivateLink 通过 Amazon 网络将数据从接口端点移动到 DynamoDB。

  • 使用默认的区域 DynamoDB 名称,Amazon VPC 内应用程序会将数据发送到通过 Amazon 网络连接到 DynamoDB 的网关端点。

有关网关端点的更多信息,请参阅《Amazon VPC 用户指南》中的网关 Amazon VPC 端点

为 DynamoDB 创建 Amazon VPC 端点策略

您可以为 Amazon VPC 端点附加控制对 DynamoDB 的访问的端点策略。该策略指定以下信息:

  • 可执行操作的 Amazon Identity and Access Management (IAM) 主体

  • 可执行的操作

  • 可对其执行操作的资源

您可以创建限制只能访问特定 DynamoDB 表的端点策略。如果您的 Amazon VPC 中有使用表的其它 Amazon Web Services,这种策略会非常有用。以下表策略限制为仅可访问 DOC-EXAMPLE-TABLE。要使用此端点策略,请将 DOC-EXAMPLE-TABLE 替换为您的表的名称。

{ "Version": "2012-10-17", "Id": "Policy1216114807515", "Statement": [ { "Sid": "Access-to-specific-table-only", "Principal": "*", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem" ], "Effect": "Allow", "Resource": ["arn:aws:dynamodb:::DOC-EXAMPLE-TABLE", "arn:aws:dynamodb:::DOC-EXAMPLE-TABLE/*"] } ] }