メニュー
Amazon Kinesis Streams
開発者ガイド

Kinesis Client Library を使用した Amazon Kinesis Streams コンシューマーの開発

Kinesis Client Library(KCL)を使用して、Amazon Kinesis Streams のコンシューマーアプリケーションを開発できます。Kinesis Streams API を使用して Kinesis streamからデータを取得することはできますが、KCLで提供するコンシューマーアプリケーションの設計パターンとコードを使用することをお勧めします。

Amazon CloudWatch を使用して KCL をモニタリングできます。詳細については、「Amazon CloudWatch による Kinesis クライアントライブラリのモニタリング」を参照してください。

Kinesis Client Library

Kinesis Client Library(KCL)を使用して、Kinesis streamからデータを取得して処理できます。このタイプのアプリケーションは、コンシューマーとも呼ばれます。KCL は、分散コンピューティングに関連する多くの複雑なタスクを処理します。たとえば、複数のインスタンス間での負荷分散、インスタンスの障害に対する応答、処理済みのレコードのチェックポイント作成、リシャーディングへの対応が挙げられます。KCL によって、レコード処理のロジックの記述に集中することができます。

KCL は AWS SDK で使用できる Kinesis Streams API とは異なることに注意してください。Kinesis Streams API は Kinesis Streams の多くの要素(ストリームの作成、リシャーディング、レコードの入力と取得など)を管理するのに役立ちます。一方、KCLはコンシューマーロールでデータの処理に特化した抽象化層を提供します。Kinesis Streams API の詳細については、Amazon Kinesis API Reference を参照してください。

KCL は Java ライブラリです。Java 以外の言語のサポートは、MultiLangDaemon という多言語インターフェイスを使用して提供されます。このデーモンは Java ベースで、Java 以外の KCL 言語を使用するときに実行されます。 たとえば、KCL for Python をインストールして、コンシューマーアプリケーションをすべて Python で書く場合でも、MultiLangDaemon を使用するために、Java をシステムにインストールする必要があります。さらに、MultiLangDaemon には、接続先の AWS リージョンなどの、ユースケースに合わせてカスタマイズする必要のあるデフォルト設定例があります。MultiLangDaemon の詳細については、GitHub で「KCL MultiLangDaemon project」のページにアクセスしてください。

KCLアプリケーションは、実行時に設定情報を使用してワーカーをインスタンス化し、次にレコードプロセッサを使用して Kinesis streamから取得したデータを処理します。KCLアプリケーションは任意の数のインスタンスで実行できます。同じアプリケーションの複数のインスタンスが、障害発生時に連係し、動的な負荷分散を行います。スループットの制限を条件として、複数の KCLアプリケーションで同じストリームを処理することもできます。

KCL のロール

KCL は、レコード処理のロジックと Kinesis Streams の仲介として機能します。

KCLアプリケーションは起動時に KCLを呼び出してワーカーをインスタンス化します。この呼び出しは、アプリケーションの設定情報(ストリーム名や AWS の認証情報など)を KCL に提供します。

KCL は、次のタスクを実行します。

  • ストリームに接続する

  • シャードを列挙する

  • シャードと他のワーカー(存在する場合)の関連付けを調整する

  • レコードプロセッサで管理する各シャードのレコードプロセッサをインスタンス化する

  • ストリームからデータレコードを取得する

  • 対応するレコードプロセッサにレコードを送信する

  • 処理されたレコードのチェックポイントを作成する

  • ワーカーのインスタンス数が変化したときに、シャードとワーカーの関連付けを調整する

  • シャードが分割またはマージされたときに、シャードとワーカーの関連付けを調整する

このページの内容: