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