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

Amazon Kinesis Data Streams のコンシューマー

コンシューマーは、Amazon Kinesis Data Streams application と呼ばれる Kinesis data stream からデータレコードを取得して、ストリームからのデータを処理します。

注記

Amazon S3、Amazon Redshift、Amazon Elasticsearch Service などのストレージサービスに直接ストリームレコードを保存するには、コンシューマーアプリケーションを作成する代わりに Kinesis Data Firehose 送信ストリームを使用できます。詳細については、「Creating an Amazon Kinesis Firehose Delivery Stream」を参照してください。

コンシューマーは、それぞれ特定のシャードから、シャードイテレーターを使用して読み込みます。シャードイテレーターは、コンシューマーによって読み込まれるストリーム内の位置を表します。ストリームからの読み取りを開始すると、コンシューマーはシャードイテレーターを取得します。これは、コンシューマーがストリームから読み取る場所を変更できます。コンシューマーが読み込み操作を実行するときは、シャードイテレーターによって指定された位置に基づいて、データレコードのバッチを受け取ります。

各コンシューマーには、アプリケーションが使用する AWS アカウントとリージョンに限定される一意の名前が必要です。この名前は、Amazon DynamoDB では制御テーブルの名前として、Amazon CloudWatch では名前空間メトリックとして使用されます。アプリケーションを起動すると、アプリケーションの状態を格納する Amazon DynamoDB テーブルを作成し、指定されたストリームに接続して、ストリームからデータを消費し始めます。Kinesis Data Streams メトリクスは、CloudWatch コンソールを使用して表示できます。

EC2 インスタンスにコンシューマーをデプロイするには、AMI のいずれか 1 つに追加します。Auto Scaling グループの複数の EC2 インスタンスで実行することにより、コンシューマーを拡張できます。Auto Scaling グループを使用すると、EC2 インスタンスに障害が発生した場合に新しいインスタンスを自動的に起動するだけでなく、アプリケーションの負荷の経時変化に応じてインスタンス数を柔軟にスケーリングすることができます。Auto Scaling グループは、一定数の EC2 インスタンスが常に実行されているようにします。Auto Scaling グループのスケーリングイベントをトリガーするには、CPU やメモリの使用率などのメトリクスを指定して、ストリームからのデータを処理する EC2 インスタンスの数を増減させることができます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」を参照してください。

Kinesis Client Library(KCL)を使用して、複数の EC2 インスタンスで複数のワーカーを動作させることにより、ストリームの並行処理を簡素化できます。KCL により、ストリーム内のシャードからデータを読み込むコードをより簡単に記述できるようになり、ストリーム内の各シャードにワーカーが確実に割り当てられます。KCL は、耐障害性に役立つチェックポイント機能も提供します。KCL の使用を開始する場合、まずは「Kinesis Client Library を使用した Amazon Kinesis Data Streams コンシューマーの開発」の例を確認することをお勧めします。