

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

# 使用 Kinesis Data Streams 來擷取 DynamoDB 的變更
<a name="kds"></a>

您可以使用 Amazon Kinesis Data Streams 來擷取 Amazon DynamoDB 的變更。

Kinesis Data Streams 會擷取任何 DynamoDB 資料表中的項目層級修改，並將其複製到您選擇的 [Kinesis 資料串流](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)。您的應用程式可以存取此串流，並以近乎即時的速度檢視項目層級的變更。您每小時可以持續擷取和儲存 TB 級的資料。您可以利用較長的資料保留時間，並透過增強的廣發功能，您可以同時觸及兩個以上的下游應用程式。其他優點包括額外的稽核和安全透明度。

Kinesis Data Streams 也可讓您存取 [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) 和 [Amazon Managed Service for Apache Flink](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/what-is.html)。這可讓您建置應用程式來啟動即時儀表板、產生提醒、實作動態定價和廣告，以及執行複雜的資料分析及機器學習演算法。

**注意**  
為 DynamoDB 使用 Kinesis 資料串流同時受到資料串流的 [Kinesis Data Streams 定價](https://aws.amazon.com/kinesis/data-streams/pricing/)和來源資料表的 [DynamoDB 定價](https://aws.amazon.com/dynamodb/pricing/)的約束。

若要使用主控台 AWS CLI或 Java SDK 在 DynamoDB 資料表上啟用 Kinesis 串流，請參閱 [Amazon DynamoDB 專用 Kinesis Data Streams 入門](kds_gettingstarted.md)。

**Topics**
+ [Kinesis Data Streams 如何與 DynamoDB 搭配運作](#kds_howitworks)
+ [Amazon DynamoDB 專用 Kinesis Data Streams 入門](kds_gettingstarted.md)
+ [以 DynamoDB Streams 和 Kinesis Data Streams 使用碎片和指標](kds_using-shards-and-metrics.md)
+ [使用 Amazon Kinesis Data Streams 和 Amazon DynamoDB 專用的 IAM 政策](kds_iam.md)

## Kinesis Data Streams 如何與 DynamoDB 搭配運作
<a name="kds_howitworks"></a>

當 DynamoDB 資料表啟用 Kinesis 資料串流時，資料表會傳送資料記錄，以擷取該資料表資料的任何變更。此資料記錄包括：
+ 最近建立、更新或刪除之任何項目的具體時間
+ 該項目的主索引鍵
+ 修改前記錄的快照
+ 修改後記錄的快照 

這些資料記錄會以接近即時的速度擷取和發布，並予以發布。將其寫入 Kinesis 資料串流後，就可以像其他記錄一樣讀取。您可以使用 Kinesis Client Library、使用 AWS Lambda、呼叫 Kinesis Data Streams API，以及使用其他連線的服務。如需詳細資訊，請參閱《Amazon Kinesis Data Streams 開發人員指南》中的[從 Amazon Kinesis Data Streams 讀取資料](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html)。

這些對資料的變更也會以非同步方式擷取。Kinesis 對其串流來源的資料表沒有效能影響。存放在 Kinesis 資料串流中的串流紀錄會採用靜態加密。如需詳細資訊，請參閱 [Amazon Kinesis Data Streams 中的資料保護](https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html)。

Kinesis 資料串流記錄的顯示順序，可能與項目變更發生的順序不同。相同的項目通知也可能會在串流中多次出現。您可以檢查 `ApproximateCreationDateTime` 屬性來識別項目修改發生的順序，並識別重複的記錄。

當您啟用 Kinesis 資料串流做為 DynamoDB 資料表串流目的地時，您可以毫秒或微秒為單位，設定 `ApproximateCreationDateTime` 值的精確度。根據預設，`ApproximateCreationDateTime` 會以毫秒為單位指出變更的時間。此外，您可以在作用中的串流目的地上變更此值。更新後，寫入 Kinesis 的串流記錄會以所需的精確度記錄 `ApproximateCreationDateTime` 值。

寫入 DynamoDB 的二進位值必須使用 [base64 編碼格式](HowItWorks.NamingRulesDataTypes.md)進行編碼。然而，當資料記錄寫入 Kinesis 資料串流時，這些編碼的二進位值會使用 base64 編碼再次編碼。從 Kinesis 資料串流讀取這些記錄時，為了擷取原始二進位值，應用程式必須將這些值解碼兩次。

使用 Kinesis Data Streams 時，DynamoDB 會根據變更資料擷取單位收取費用。每個單一項目的 1 KB 變更會計為一個變更資料擷取單位。使用與[寫入作業的容量單位耗用量](read-write-operations.md#write-operation-consumption)相同的邏輯，以寫入串流之項目的「之前」和「之後」映像中較大者，計算每個項目的 KB 變化量。運作方式與 DynamoDB [隨需](capacity-mode.md#capacity-mode-on-demand)模式類似，您不需要為變更資料擷取單位佈建容量輸送量。

### 為 DynamoDB 資料表開啟 Kinesis 資料串流
<a name="kds_howitworks.enabling"></a>

您可以使用 、 AWS 管理主控台 AWS SDK 或 AWS Command Line Interface ()，從現有的 DynamoDB 資料表啟用或停用串流至 Kinesis AWS CLI。
+ 您只能在與資料表相同的 AWS 帳戶和 AWS 區域中，將資料從 DynamoDB 串流到 Kinesis Data Streams。
+ 您只能將 DynamoDB 資料表中的資料串流至一個 Kinesis 資料串流。

  

### 在 DynamoDB 資料表上變更 Kinesis Data Streams 目的地
<a name="kds_howitworks.makingchanges"></a>

根據預設，所有 Kinesis 資料串流記錄都包含 `ApproximateCreationDateTime` 屬性。此屬性代表每個記錄建立當下約略的時間戳記，以毫秒為單位。您可以使用 [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis)、 SDK 或 來變更這些值的精確度 AWS CLI 