

# Kinesis Data Streams を使用して DynamoDB への変更をキャプチャする。
<a name="kds"></a>

Amazon Kinesis Data Streams を使用して Amazon DynamoDB への変更をキャプチャできます。

Kinesis Data Streams は、DynamoDB テーブルの項目レベルの変更をキャプチャーし、それらを [Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) にレプリケートします。アプリケーションは このストリームにアクセスして、項目レベルの変更をほぼリアルタイムで表示できます。1 時間あたりテラバイトのデータを継続的に取り込み保存できます。より長いデータ保持時間を利用し、強化されたファンアウト機能により、2 つ以上のダウンストリームアプリケーションに同時にアクセスできます。その他のメリットには、追加の監査とセキュリティの透明性が含まれます。

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 データストリームから読み取る場合、未加工のバイナリ値を取得するには、アプリケーションでこれらの値を 2 回デコードする必要があります。

DynamoDB では、Kinesis Data Streams の使用に対して変更データキャプチャ単位で課金されます。単一の項目あたり 1 KB の変更が、1 つの変更データキャプチャ単位としてカウントされます。各項目で変更したキロバイト数は、[書き込み操作のキャパシティーユニット消費量](read-write-operations.md#write-operation-consumption)と同じロジックを使用して、ストリームに書き込まれた項目の「前の」イメージと「後の」イメージの大きい方で計算されます。DynamoDB [オンデマンド](capacity-mode.md#capacity-mode-on-demand)モードの動作と同様に、変更データキャプチャ単位のキャパシティースループットをプロビジョニングする必要はありません。

### DynamoDB テーブルの Kinesis データストリームを有効にする
<a name="kds_howitworks.enabling"></a>

AWS マネジメントコンソール、AWS SDK、または AWS Command Line Interface (AWS CLI) を使用して、既存の DynamoDB テーブルから Kinesis へのストリーミングを有効または無効にすることができます。
+ テーブルと同じ AWS アカウントと AWS リージョンでのみ、DynamoDB から Kinesis Data Streams にデータをストリーミングできます。
+ DynamoDB テーブルからのデータを 1 つの 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 を使用して変更できます。