Amazon DynamoDB からのストリーミングを使用するには、Amazon Kinesis Adapter を使用することをお勧めします。DynamoDB Streams API は、Kinesis Data Streams (大規模なストリーミングデータをリアルタイムで処理するサービス) と意図的に似せています。どちらのサービスでも、データストリーミングは、ストリーミングレコードのコンテナであるシャードで構成されています。両方のサービスの API には ListStreams
、DescribeStream
、GetShards
、および GetShardIterator
オペレーションが含まれています。(これらの DynamoDB Streams アクションは、Kinesis Data Streams の対応するアクションと似ていますが、100% 同一ではありません)。
Kinesis Client Library (KCL) を使用して、Kinesis Data Streams のアプリケーションを書き込むことができます。KCL は、低レベルの Kinesis Data Streams API の上で役に立つ抽象化を提供することによりコーディングを簡素化します。KCL の詳細については、「Amazon Kinesis Data Streams デベロッパーガイド」の「Kinesis Client Library を使用したコンシューマーの開発」を参照してください。
現在の KCL バージョン 1.x と AWS SDK for Java v1.x は、安定性とパフォーマンスを確保するために、ライフサイクルを通じて引き続き完全にサポートされます。既存の SDK を使用している場合、v1.x AWS SDK for Java を使用する既存のアプリケーションは、AWS SDK とツールのメンテナンスポリシー に従って、移行期間中も意図したとおりに機能し続けます。
DynamoDB Streams ユーザーは、KCL 内のデザインパターンを使用して DynamoDB Streams のシャードとストリーミングレコードを処理できます。これを行うには、DynamoDB Streams Kinesis Adapter を使用します。Kinesis Adapter は Kinesis Data Streams インターフェイスを実装しているため、KCL を使用して DynamoDB Streams からのレコードを消費および処理することができます。DynamoDB Streams Kinesis アダプターのセットアップとインストールの方法については、「GitHub リポジトリ
次の図表は、これらのライブラリがどのように連携するかを示しています。

DynamoDB Streams Kinesis Adapter を使用すれば、DynamoDB Streams エンドポイントにシームレスに誘導された API コールを使用して、KCL インターフェイスに対して開発を開始できます。
アプリケーションは起動時に KCL をコールしてワーカーをインスタンス化します。ワーカーに、アプリケーションの構成情報 (ストリーミング記述子や AWS 認証情報、および提供するレコードプロセッサクラスの名前など) を提供する必要があります。レコードプロセッサでコードを実行すると、ワーカーは次のタスクを実行します。
-
ストリームに接続する
-
ストリーミング内のシャードを列挙します。
-
シャードと他のワーカー (存在する場合) の関連付けを調整する
-
レコードプロセッサで管理する各シャードのレコードプロセッサをインスタンス化する
-
ストリーミングからレコードを取得します。
-
対応するレコードプロセッサにレコードを送信する
-
処理されたレコードのチェックポイントを作成する
-
ワーカーのインスタンス数が変化したときに、シャードとワーカーの関連付けを調整する
-
シャードが分割されたときに、シャードとワーカーの関連付けを調整します。
注記
こちらに記載されている KCL 概念の説明については、「Amazon Kinesis Data Streams デベロッパーガイド」の「Kinesis Client Library を使用したコンシューマーの開発」を参照してください。
AWS Lambda でのストリームの使用の詳細については、「DynamoDB Streams と AWS Lambda のトリガー」を参照してください。