AWS PrivateLink for DynamoDB - Amazon DynamoDB

AWS PrivateLink for DynamoDB

透過 AWS PrivateLink for DynamoDB,您可以在虛擬私有雲端 (Amazon VPC) 中佈建 Amazon VPC 端點 (介面端點)。這些端點可供內部部署應用程式透過 VPN 與 Direct Connect,或不同 AWS 區域 間的 Amazon VPC peering 直接存取。使用 AWS PrivateLink 與介面端點,您可以簡化應用程式至 DynamoDB 的私有網路連線。

位於 VPC 中的應用程式無需公有 IP 位址,即可透過 VPC 介面端點與 DynamoDB 進行操作通訊。介面端點由一或多個彈性網路介面 (ENI) 所組成,這些介面會從 Amazon VPC 的子網路中指派私有 IP 位址。透過介面端點傳送至 DynamoDB 的請求會保留在 Amazon 網路內。您也可以透過 AWS Direct Connect 或 AWS Virtual Private Network (Site-to-Site VPN),從內部部署應用程式存取 Amazon VPC 中的介面端點。如需如何將 Amazon VPC 與內部部署網路連線的詳細資訊,請參閱《Direct Connect 使用者指南》與《AWS Site-to-Site VPN 使用者指南》。

如需介面端點的一般資訊,請參閱《AWS PrivateLink 指南》中的介面 Amazon VPC 端點 (AWS PrivateLink)。此外,Amazon DynamoDB Streams 端點亦支援 AWS PrivateLink。如需更多詳細資訊,請參閱 AWS PrivateLink 適用於 DynamoDB Streams

適用於 Amazon DynamoDB 的 Amazon VPC 端點類型

您可以使用兩種類型的 Amazon VPC 端點來存取 Amazon DynamoDB:閘道端點介面端點 (使用 AWS PrivateLink)。閘道端點是您在路由表中指定的閘道,用於透過 AWS 網路從 Amazon VPC 存取 DynamoDB。介面端點透過私有 IP 位址,將來自 Amazon VPC 內部、內部部署環境,或使用 Amazon VPC 對等互連或 AWS Transit Gateway 從其他 AWS 區域 的 Amazon VPC 發出的請求,路由至 DynamoDB,以擴展閘道端點的功能。如需詳細資訊,請參閱什麼是 Amazon VPC 對等互連? Transit Gateway 與 Amazon VPC 對等互連

介面端點與閘道端點相容。若您的 Amazon VPC 中已有現有的閘道端點,則可在同一個 Amazon VPC 中同時使用這兩種類型的端點。

DynamoDB 的閘道端點

DynamoDB 的介面端點

在這兩種情況下,您的網路流量都保留在 AWS 網路上。

使用 Amazon DynamoDB 公有 IP 位址

使用 Amazon VPC 中的私有 IP 位址以存取 Amazon DynamoDB

不允許從內部部署存取

允許從內部部署存取

不允許從其他 AWS 區域 存取

允許透過 Amazon VPC 對等互連或 AWS Transit Gateway,從另一個 AWS 區域 的 Amazon VPC 端點存取

不計費

計費

如需有關閘道端點的詳細資訊,請參閱《AWS PrivateLink 指南》中的閘道 Amazon VPC 端點

Amazon VPC 的相關考量同樣適用於 AWS PrivateLink for Amazon DynamoDB。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的介面端點考量事項AWS PrivateLink 配額。此外,適用下列限制。

AWS PrivateLink for Amazon DynamoDB 不支援下列項目:

  • Transport Layer Security (TLS) 1.1

  • 私有與混合網域名稱系統 (DNS) 服務

您可為每個已啟用的 AWS PrivateLink 端點,每秒提交最多 50,000 個請求。

注意

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 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 介面端點存取 DynamoDB 資料表及控制 API 操作

您可以使用 AWS CLI 或 AWS SDK 存取 DynamoDB 資料表,並透過 DynamoDB 介面端點執行控制 API 操作。

若要透過 AWS CLI 指令使用 DynamoDB 介面端點存取 DynamoDB 資料表或控制 API 操作,請使用 --region--endpoint-url 參數。

範例:建立 VPC 端點

aws ec2 create-vpc-endpoint \ --region us-east-1 \ --service-name com.amazonaws.us-east-1.dynamodb \ --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 時,透過 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 存取 DynamoDB 資料表

在下列範例中,將區域 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 名稱。

在 Amazon VPC 中,使用介面端點即可存取 DynamoDB,無需閘道端點或網際網路閘道。

您的 Amazon VPC 中的介面端點可透過 Amazon 網路,將 VPC 內及內部部署應用程式路由至 DynamoDB,如下圖所示。

資料流程圖顯示了內部部署與 VPC 內應用程式如何使用介面端點和 AWS PrivateLink 存取 DynamoDB。

此圖展示了以下要點:

  • 您的內部部署網路使用 Direct Connect 或 Site-to-Site VPN 連線至 Amazon VPC A。

  • 您的內部部署及 VPC A 中的應用程式使用端點特定的 DNS 名稱,透過 DynamoDB 介面端點存取 DynamoDB。

  • 內部部署應用程式在 Amazon VPC 中透過 Direct Connect (或 Site-to-Site VPN) 將資料傳送至介面端點,AWS PrivateLink 會透過 AWS 網路將資料從介面端點傳送至 DynamoDB。

  • VPC 內應用程式也會將流量傳送至介面端點,AWS PrivateLink 會透過 AWS 網路將資料從介面端點傳送至 DynamoDB。

在同一個 Amazon VPC 中,同時使用閘道端點與介面端點來存取 DynamoDB。

您可以在同一個 Amazon VPC 中建立介面端點,並保留現有的閘道端點,如下圖所示。採用此方式後,VPC 內應用程式可繼續透過閘道端點存取 DynamoDB,且無需付費。之後,僅內部部署應用程式會使用介面端點存取 DynamoDB。若要這樣存取,必須更新內部部署應用程式以使用 DynamoDB 的端點特定 DNS 名稱。

資料流程圖顯示如何同時使用閘道端點與介面端點存取 DynamoDB。

此圖展示了以下要點:

  • 內部部署應用程式在 VPC 中透過 Direct Connect (或 Site-to-Site VPN) 使用端點特定的 DNS 名稱傳送資料至介面端點。AWS PrivateLink 會透過 AWS 網路將資料從介面端點移至 DynamoDB。

  • VPC 內應用程式使用預設區域的 DynamoDB 名稱,透過 AWS 網路將資料傳送至連線至 DynamoDB 的閘道端點。

如需閘道端點的詳細資訊,請參閱《Amazon VPC 使用者指南》中的閘道 VPC 端點

為 DynamoDB 建立 Amazon VPC 端點政策

您可以將端點政策附加至 Amazon VPC 端點,以控制對 DynamoDB 的存取。此政策會指定下列資訊:

  • 可執行動作的 AWS Identity and Access Management (IAM) 主體

  • 可執行的動作

  • 可在其中執行動作的資源

您可以建立端點政策,以限制僅能存取特定的 DynamoDB 資料表。若您的 Amazon VPC 中有其他使用資料表的 AWS 服務,此類政策將十分實用。下列資料表政策僅允許存取 DOC-EXAMPLE-TABLE。若要使用此端點政策,請將 DOC-EXAMPLE-TABLE 取代為您的資料表名稱。

JSON
{ "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:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE", "arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE/*"] } ] }

在 AWS Management Console 私有存取中使用 DynamoDB 端點

AWS Management Console 私有存取中使用 VPC 端點搭配 DynamoDB 主控台時,您必須設定 DynamoDB 與 DynamoDB Streams 的 DNS 組態。

若要讓 DynamoDB 可在 AWS Management Console 私有存取環境中使用,請建立以下兩個 VPC 端點。

  • com.amazonaws.<region>.dynamodb

  • com.amazonaws.<region>.dynamodb-streams

建立 VPC 端點時,請前往 Route 53 主控台,使用區域端點 dynamodb.us-east-1.amazonaws.com 為 DynamoDB 建立私有託管區域。

在私有託管區域中建立以下兩筆別名記錄:

  • dynamodb.<region>.amazonaws.com:將流量導向至 VPC 端點 com.amazonaws.<region>.dynamodb

  • streams.dynamodb.<region>.amazonaws.com:將流量導向至 VPC 端點 com.amazonaws.<region>.dynamodb-streams