

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS PrivateLink 適用於 DynamoDB
<a name="privatelink-interface-endpoints"></a>

使用 AWS PrivateLink for DynamoDB，您可以在虛擬私有雲端 *(Amazon VPC*) 中佈建介面 Amazon VPC 端點 （介面端點）。這些端點可直接透過 VPN 和內部部署的應用程式存取 Direct Connect，或 AWS 區域 是透過 [Amazon VPC 對等](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)互連的不同應用程式存取。使用 AWS PrivateLink 與介面端點，您可以簡化應用程式至 DynamoDB 的私有網路連線。

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

如需介面端點的一般資訊，請參閱[《 指南》中的介面 Amazon VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)。Amazon DynamoDB Streams 端點 AWS PrivateLink 也支援 。 *AWS PrivateLink *如需詳細資訊，請參閱[AWS PrivateLink 適用於 DynamoDB Streams](privatelink-streams.md)。

**Topics**
+ [適用於 Amazon DynamoDB 的 Amazon VPC 端點類型](#types-of-vpc-endpoints-for-ddb)
+ [使用 AWS PrivateLink for Amazon DynamoDB 時的考量事項](#privatelink-considerations)
+ [建立 Amazon VPC 端點](#ddb-creating-vpc)
+ [存取 Amazon DynamoDB 介面端點](#accessing-ddb-interface-endpoints)
+ [從 DynamoDB 介面端點存取 DynamoDB 資料表及控制 API 操作](#accessing-tables-apis-from-interface-endpoints)
+ [更新內部部署 DNS 組態](#updating-on-premises-dns-config)
+ [為 DynamoDB 建立 Amazon VPC 端點政策](#creating-vpc-endpoint-policy)
+ [搭配 AWS 管理主控台 私有存取使用 DynamoDB 端點](#ddb-endpoints-private-access)
+ [AWS PrivateLink 適用於 DynamoDB Streams](privatelink-streams.md)
+ [使用 AWS PrivateLink for DynamoDB Accelerator (DAX)](dax-private-link.md)

## 適用於 Amazon DynamoDB 的 Amazon VPC 端點類型
<a name="types-of-vpc-endpoints-for-ddb"></a>

您可以使用兩種類型的 Amazon VPC 端點來存取 Amazon DynamoDB：*閘道端點*和*介面端點* （使用 AWS PrivateLink)。*閘道端點*是您在路由表中指定的閘道，可透過 AWS 網路從 Amazon VPC 存取 DynamoDB。*介面端點*使用私有 IP 地址，透過使用 Amazon VPC 對等互連或 ，將請求從 Amazon VPC 內部、內部部署或另一個 Amazon VPC 路由至 DynamoDB， AWS 區域 藉此擴充閘道端點的功能 AWS Transit Gateway。如需詳細資訊，請參閱[什麼是 Amazon VPC 對等互連？](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)和 [ Transit Gateway 與 Amazon VPC 對等互連](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html)。

介面端點與閘道端點相容。若您的 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 端點](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html)。

## 使用 AWS PrivateLink for Amazon DynamoDB 時的考量事項
<a name="privatelink-considerations"></a>

Amazon VPC 考量適用於 AWS PrivateLink Amazon DynamoDB。如需詳細資訊，請參閱《AWS PrivateLink 指南》**中的[介面端點考量事項](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations)和 [AWS PrivateLink 配額](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html)。此外，適用下列限制。

AWS PrivateLink for Amazon DynamoDB 不支援下列項目：
+ Transport Layer Security (TLS) 1.1
+ 私有與混合網域名稱系統 (DNS) 服務

**重要**  
請勿建立私有託管區域來覆寫 DynamoDB 端點 DNS 名稱 （例如 `dynamodb.region.amazonaws.com`或 `*.region.amazonaws.com`)，以將流量路由到您的介面端點。DynamoDB DNS 組態可能會隨著時間而變更。  
 自訂 DNS 覆寫與這些變更不相容，可能會導致請求意外透過公有 IP 地址路由，而不是您的介面端點。  
 若要透過 存取 DynamoDB AWS PrivateLink，請將您的用戶端設定為直接使用 Amazon VPC 端點 URL （例如 `https://vpce-1a2b3c4d-5e6f.dynamodb.region.vpce.amazonaws.com`)。

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

**注意**  
 AWS PrivateLink 端點的網路連線逾時不在 DynamoDB 錯誤回應範圍內，需要由連線至 PrivateLink 端點的應用程式妥善處理。

## 建立 Amazon VPC 端點
<a name="ddb-creating-vpc"></a>

若要建立 Amazon VPC 介面端點，請參閱《AWS PrivateLink 指南》**中的[建立 Amazon VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

## 存取 Amazon DynamoDB 介面端點
<a name="accessing-ddb-interface-endpoints"></a>

建立介面端點時，DynamoDB 會產生兩種類型的專用 DynamoDB DNS 名稱：*區域*和*可用區*。
+ *區域* DNS 名稱在其名稱`vpce.amazonaws.com`中包含唯一的 Amazon VPC 端點 ID、服務識別符 AWS 區域、 和 。例如，對於 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 操作
<a name="accessing-tables-apis-from-interface-endpoints"></a>

您可以使用 AWS CLI AWS SDKs來存取 DynamoDB 資料表，並透過 DynamoDB 介面端點控制 API 操作。

### AWS CLI 範例
<a name="privatelink-ddb-aws-cli-examples"></a>

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

**範例：建立 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 開發套件範例
<a name="privatelink-ddb-aws-sdk-examples"></a>

若要在使用 AWS SDKs 時透過 DynamoDB 介面端點存取 DynamoDB 資料表或 DynamoDB 控制 API 操作，請將 SDK SDKs 更新至最新版本。 DynamoDB 接著，設定您的用戶端使用端點 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 組態
<a name="updating-on-premises-dns-config"></a>

 當使用端點特定的 DNS 名稱來存取 DynamoDB 介面端點時，無需更新內部部署 DNS 解析器。您可以從公有 DynamoDB DNS 網域中，使用介面端點的私有 IP 位址解析端點特定的 DNS 名稱。

### 在 Amazon VPC 中，使用介面端點即可存取 DynamoDB，無需閘道端點或網際網路閘道。
<a name="using-interface-endpoints"></a>

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

![\[資料流程圖顯示了內部部署與 VPC 內應用程式如何使用介面端點和 AWS PrivateLink存取 DynamoDB。\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/PrivateLink-interfaceEndpoints.png)


此圖展示了以下要點：
+ 您的內部部署網路會使用 Direct Connect 或 Site-to-Site VPN 連線到 Amazon VPC A。
+ 您的內部部署及 VPC A 中的應用程式使用端點特定的 DNS 名稱，透過 DynamoDB 介面端點存取 DynamoDB。
+ 內部部署應用程式會透過 Direct Connect （或 Site-to-Site VPN) 將資料傳送至 Amazon VPC 中的介面端點。 會透過 AWS 網路將資料從介面端點 AWS PrivateLink 移至 DynamoDB。
+ Amazon VPC 應用程式也會將流量傳送至介面端點。 AWS PrivateLink 會透過 AWS 網路將資料從介面端點移至 DynamoDB。

### 在同一個 Amazon VPC 中，同時使用閘道端點與介面端點來存取 DynamoDB。
<a name="using-gateway-and-interface-endpoints"></a>

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

![\[資料流程圖顯示如何同時使用閘道端點與介面端點存取 DynamoDB。\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/PL-Image2-InterfaceAndGatewayEP.png)


此圖展示了以下要點：
+ 內部部署應用程式會使用端點特定的 DNS 名稱，透過 Direct Connect （或 Site-to-Site VPN) 將資料傳送至 Amazon VPC 內的介面端點。 會透過 AWS 網路將資料從介面端點 AWS PrivateLink 移至 DynamoDB。
+ 使用預設的區域 DynamoDB 名稱，Amazon VPC 內應用程式會將資料傳送至透過 AWS 網路連線至 DynamoDB 的閘道端點。

如需閘道端點的詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[閘道 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html)。

## 為 DynamoDB 建立 Amazon VPC 端點政策
<a name="creating-vpc-endpoint-policy"></a>

您可以將端點政策附加至 Amazon VPC 端點，以控制對 DynamoDB 的存取。此政策會指定下列資訊：
+ 可執行動作的 AWS Identity and Access Management (IAM) 委託人 
+ 可執行的動作 
+ 可在其中執行動作的資源 

**Topics**
+ [範例：限制從 Amazon VPC 端點對特定資料表的存取](#privatelink-example-restrict-access-to-bucket)

### 範例：限制從 Amazon VPC 端點對特定資料表的存取
<a name="privatelink-example-restrict-access-to-bucket"></a>

您可以建立端點政策，以限制僅能存取特定的 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 管理主控台 私有存取使用 DynamoDB 端點
<a name="ddb-endpoints-private-access"></a>

在 [AWS 管理主控台 私有存取](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)中使用 VPC 端點搭配 [DynamoDB 主控台](https://console.aws.amazon.com/dynamodb)時，您必須設定 DynamoDB 與 DynamoDB Streams 的 DNS 組態。

若要將 DynamoDB 設定為可在 AWS 管理主控台 私有存取中存取，您必須建立下列兩個 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`。