适用于 DynamoDB 的 AWS PrivateLink
借助适用于 DynamoDB 的 AWS PrivateLink,您可以在 Virtual Private Cloud(Amazon VPC)中预置接口 Amazon VPC 端点(接口端点)。这些端点可从本地(通过 VPN 及 AWS Direct Connect)或其它 AWS 区域(通过 Amazon VPC 对等连接)中的应用程序直接访问。使用 AWS PrivateLink 和接口端点,您可以简化应用程序与 DynamoDB 之间的私有网络连接。
VPC 中的应用程序无需公有 IP 地址即可与 DynamoDB 接口 VPC 端点进行通信来执行 DynamoDB 操作。接口端点由一个或多个弹性网络接口(ENI)表示,这些接口是从 Amazon VPC 中的子网分配的私有 IP 地址。通过接口端点向 DynamoDB 发出的请求仍留在 Amazon 网络上。您还可以通过 AWS Direct Connect 或 AWS Virtual Private Network(AWS VPN)从本地部署应用程序访问 Amazon VPC 中的接口端点。有关如何将 Amazon VPC 与本地网络连接的更多信息,请参阅 AWS Direct Connect 用户指南和 AWS Site-to-Site VPN 用户指南。
有关接口端点的一般信息,请参阅《AWS PrivateLink 指南》中的接口 Amazon VPC 端点(AWS PrivateLink)。
主题
适用于 Amazon DynamoDB 的 Amazon VPC 端点类型
您可以使用两种类型的 Amazon VPC 端点访问 Amazon DynamoDB:网关端点和接口端点(使用 AWS PrivateLink)。网关端点是您在路由表中指定的网关,用于通过 AWS 网络从 Amazon VPC 访问 DynamoDB。接口端点通过私有 IP 地址将请求从您的 Amazon VPC 内部、本地或其它 AWS 区域中的 Amazon VPC,使用 Amazon VPC 对等连接或 AWS Transit Gateway 路由到 DynamoDB,从而扩展网关端点的功能。有关更多信息,请参阅 What is Amazon VPC peering? 和 Transit Gateway 与 Amazon VPC 对等连接。
接口端点与网关端点兼容。如果您在 Amazon VPC 中有现有网关端点,则可以在同一 Amazon VPC 中使用这两种类型的端点。
适用于 DynamoDB 的网关端点 |
适用于 DynamoDB 的接口端点 |
---|---|
在这两种情况下,您的网络流量仍保留在 AWS 网络中。 |
|
使用 Amazon DynamoDB 公有 IP 地址 |
使用 Amazon VPC 中的私有 IP 地址访问 Amazon DynamoDB |
不允许从本地访问 |
允许从本地访问 |
不允许从其他 AWS 区域访问 |
允许从另一个 AWS 区域中的 Amazon VPC 端点使用 Amazon VPC 对等连接或 AWS Transit Gateway 进行访问 |
不计费 |
计费 |
有关网关端点的更多信息,请参阅《AWS PrivateLink 指南》中的网关 Amazon VPC 端点。
使用适用于 Amazon DynamoDB 的 AWS PrivateLink 时的注意事项
适用于 Amazon DynamoDB 的 AWS PrivateLink 的适用 Amazon VPC 注意事项。有关更多信息,请参阅《AWS PrivateLink 指南》中的接口端点注意事项和 AWS PrivateLink 限额。此外,以下限制将适用:
适用于 Amazon DynamoDB 的 AWS PrivateLink 不支持以下各项:
-
传输层安全性协议(TLS)1.1
-
私有域名系统和混合域名系统(DNS)服务
AWS PrivateLink 目前不支持 Amazon DynamoDB Streams 端点。
对于您启用的每个 AWS PrivateLink 端点,您每秒最多可以提交 5 万个请求。
注意
AWS PrivateLink 端点的网络连接超时不在 DynamoDB 错误响应的范围内,需要由连接到 PrivateLink 端点的应用程序适当进行处理。
创建 Amazon VPC 端点
要创建 Amazon VPC 接口端点,请参阅《AWS PrivateLink 指南》中的创建 Amazon VPC 端点。
访问 Amazon DynamoDB 接口端点
创建接口端点时,DynamoDB 会生成两种特定于端点的 DynamoDB DNS 名称:区域和地区。
-
区域 DNS 名称包括唯一的 Amazon VPC 端点 ID、服务标识符、AWS 区域和以其命名的
vpce.amazonaws.com
。例如,对于 Amazon VPC 端点 ID
,生成的 DNS 名称可能类似于vpce-1a2b3c4d
。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 操作
您可以使用 AWS CLI 或 AWS SDK 通过 DynamoDB 接口端点访问 DynamoDB 表并控制 API 操作。
AWS CLI 示例
要使用 AWS 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
AWS SDK 示例
要在使用 AWS SDK 时通过 DynamoDB 接口端点访问 DynamoDB 表或 DynamoDB 控制 API 操作,请将 SDK 更新为最新版本。然后,将客户端配置为使用端点 URL 通过 DynamoDB 接口端点访问表或 DynamoDB 控制 API 操作。
更新本地 DNS 配置
使用特定于端点的 DNS 名称访问适用于 DynamoDB 的接口端点时,您无需更新本地 DNS 解析程序。您可以使用来自公有 DynamoDB DNS 域的接口端点的私有 IP 地址解析特定于端点的 DNS 名称。
使用接口端点访问 DynamoDB,无需 Amazon VPC 中的网关端点和互联网网关
Amazon VPC 中的接口端点可以通过 Amazon 网络将 Amazon VPC 内的应用程序和本地应用程序路由到 DynamoDB,如下图所示。
![数据流程图,显示了使用接口端点和 AWS PrivateLink 从本地和 Amazon VPC 内的应用程序对 DynamoDB 的访问。](images/PrivateLink-interfaceEndpoints.png)
该图阐释了以下内容:
-
您的本地网络使用 AWS Direct Connect 或者 AWS VPN 连接到 Amazon VPC A。
-
本地和 Amazon VPC A 中的应用程序使用特定于端点的 DNS 名称通过 DynamoDB 接口端点访问 DynamoDB。
-
本地应用程序通过 AWS Direct Connect(或 AWS VPN)将数据发送到 Amazon VPC 中的接口端点。AWS PrivateLink 通过 AWS 网络将数据从接口端点移动到 DynamoDB。
-
Amazon VPC 中的应用程序还向接口端点发送通信。AWS PrivateLink 通过 AWS 网络将数据从接口端点移动到 DynamoDB。
在同一 Amazon VPC 中同时使用网关端点和接口端点来访问 DynamoDB
您可以创建接口端点并将现有网关端点保留在同一 Amazon VPC 中,如下图所示。通过这种方法,您可以允许 Amazon VPC 内的应用程序继续通过网关端点访问 DynamoDB,而无需付费。然后,只有您的本地应用程序才会使用接口端点访问 DynamoDB。要通过这种方式访问 DynamoDB,您必须更新本地应用程序,以使用适用于 DynamoDB 的特定于端点的 DNS 名称。
![数据流程图,显示了同时使用网关端点和接口端点访问 DynamoDB 的情况。](images/PL-Image2-InterfaceAndGatewayEP.png)
该图阐释了以下内容:
-
本地应用程序使用特定于端点的 DNS 名称通过 AWS Direct Connect(或 AWS VPN)将数据发送到 Amazon VPC 中的接口端点。AWS PrivateLink 通过 AWS 网络将数据从接口端点移动到 DynamoDB。
-
使用默认的区域 DynamoDB 名称,Amazon VPC 内应用程序会将数据发送到通过 AWS 网络连接到 DynamoDB 的网关端点。
有关网关端点的更多信息,请参阅《Amazon VPC 用户指南》中的网关 Amazon VPC 端点。
为 DynamoDB 创建 Amazon VPC 端点策略
您可以为 Amazon VPC 端点附加控制对 DynamoDB 的访问的端点策略。该策略指定以下信息:
-
可执行操作的 AWS Identity and Access Management (IAM) 主体
-
可执行的操作
-
可对其执行操作的资源
示例:限制从 Amazon VPC 端点对特定表的访问
您可以创建限制只能访问特定 DynamoDB 表的端点策略。如果您的 Amazon VPC 中有使用表的其它 AWS 服务,这种策略会非常有用。以下表策略限制为仅可访问
。要使用此端点策略,请将 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/*"] } ] }