Amazon Kinesis Data Streams
開発者ガイド

Kinesis Data Streams の主要なコンセプト

Amazon Kinesis Data Streams を使用し始めると、アーキテクチャと用語を理解していることが強みになります。

Kinesis Data Streams のアーキテクチャの概要

以下の図に、Kinesis Data Streams のアーキテクチャの概要を示します。プロデューサーは継続的にデータを Kinesis Data Streams にプッシュし、コンシューマーはリアルタイムでデータを処理します。コンシューマー (Amazon EC2 上で実行されるカスタムアプリケーションや Amazon Kinesis Data Firehose 配信ストリームなど) は、Amazon DynamoDB、Amazon Redshift、Amazon S3 などの AWS のサービスを使用して、その結果を保存できます。


					Kinesis Data Streams のアーキテクチャの概要図

Kinesis Data Streams の用語

Kinesis Data Stream

Kinesis data stream は、シャードのセットです。各シャードにはデータレコードのシーケンスがあります。各データレコードには、Kinesis Data Streams によってシーケンス番号が割り当てられます。

データレコード

データレコードは、Kinesis data stream に保存されたデータの単位です。データレコードは、シーケンス番号パーティションキー、データ BLOB (イミュータブルなバイトシーケンス) で構成されます。Kinesis Data Streams で BLOB 内のデータが検査、解釈、変更されることは一切ありません。データ BLOB は 最大 1 MB にすることができます。

保持期間

保持期間は、データレコードがストリームに追加された後にデータレコードにアクセスできる時間の長さです。ストリームの保持期間は、デフォルトで作成後 24 時間に設定されます。IncreaseStreamRetentionPeriod オペレーションを使用して、保持期間を最大 168 時間 (7 日) まで増やしたり、DecreaseStreamRetentionPeriod オペレーションを使用して最短の 24 時間に短縮したりできます。24 時間を超える保持期間が設定されたストリームには追加料金が適用されます。詳細については、「Amazon Kinesis Data Streams 料金表」を参照してください。

プロデューサー

プロデューサーは、レコードを Amazon Kinesis Data Streams に送信します。たとえば、ストリームにログデータを送信するウェブサーバーはプロデューサーです。

コンシューマー

コンシューマーは、Amazon Kinesis Data Streams からレコードを取得して処理します。これらのコンシューマーは Amazon Kinesis Data Streams Application と呼ばれます。

Amazon Kinesis Data Streams Application

Amazon Kinesis Data Streams application はストリームのコンシューマーで、一般的に EC2 インスタンスのフリートで実行されます。

開発可能なコンシューマーには、共有ファンアウトコンシューマーと拡張ファンアウトコンシューマーの 2 種類あります。両者間の相違点を確認する方法、各種類のコンシューマーを作成する方法については、「Amazon Kinesis Data Streams からのデータの読み取り」を参照してください。

Kinesis Data Streams アプリケーションの出力を別のストリームの入力にすることで、リアルタイムにデータを処理する複雑なトポロジを作成できます。アプリケーションは、さまざまな他の AWS サービスにデータを送信することもできます。複数のアプリケーションが 1 つのストリームを使用して、各アプリケーションが同時にかつ独立してストリームからデータを消費できます。

シャード

シャードは、ストリーム内の一意に識別されたデータレコードのシーケンスです。ストリームは複数のシャードで構成され、各シャードが容量の 1 単位になります。各シャードは 読み取りは最大 1 秒あたり 5 件のトランザクション、データ読み取りの最大合計レートは 1 秒あたり 2 MB と 書き込みについては最大 1 秒あたり 1,000 レコード、データの最大書き込み合計レートは 1 秒あたり 1 MB (パーティションキーを含む) をサポートできます。ストリームのデータ容量は、ストリームに指定したシャードの数によって決まります。ストリームの総容量はシャードの容量の合計です。

データ転送速度が増加した場合、ストリームに割り当てられたシャード数を増やしたり、減らしたりできます。

パーティションキー

パーティションキーは、ストリーム内のデータをシャード別にグループ化します。Kinesis Data Streams は、ストリームに属するデータレコードを複数のシャードに分離します。この際、各データレコードに関連付けられたパーティションキーを使用して、配分先のシャードを決定します。パーティションキーは最大 256 バイト長の Unicode 文字列です。MD5 ハッシュ関数を使用してパーティションキーを 128 ビットの整数値にマッピングし、関連付けられたデータレコードをシャードにマッピングします。アプリケーションは、ストリームにデータを配置するときに、パーティションキーを指定する必要があります。

シーケンス番号

各データレコードには、所属するシャード内で一意のシーケンス番号が割り当てられます。client.putRecords または client.putRecord を使用してストリームに書き込むと、Kinesis Data Streams によってシーケンス番号が割り当てられます。同じパーティションキーのシーケンス番号は、通常徐々に増加されます。書き込みリクエスト間の期間が長くなるほど、シーケンス番号は大きくなります。

注記

シーケンス番号は、同じストリーム内の一連のデータのインデックスとして使用することはできません。一連のデータを論理的に区別するには、パーティションキーを使用するか、データセットごとに個別のストリームを作成します。

Kinesis Client Library

Kinesis Client Library をアプリケーションにコンパイルすることで、耐障害性を維持しながらストリームからデータを消費できます。Kinesis Client Library により、シャードごとにその実行と処理用のレコードプロセッサが確保されます。また、ストリームからのデータの読み取りが簡素化されます。Kinesis Client Library は Amazon DynamoDB テーブルに制御データを保存します。また、データを処理するアプリケーションごとに 1 つのテーブルを作成します。

Kinesis Client Library のメジャーバージョンは 2 種類あります。使用するバージョンは、作成するコンシューマーの種類によって異なります。詳細については、「Amazon Kinesis Data Streams からのデータの読み取り」を参照してください。

アプリケーション名

Amazon Kinesis Data Streams application 名はアプリケーションを識別します。各アプリケーションには、アプリケーションが使用する AWS アカウントとリージョンに限定される一意の名前が必要です。この名前は、Amazon DynamoDB では制御テーブルと Amazon CloudWatch メトリクスの名前空間の名前として使用されます。

サーバー側の暗号化

Amazon Kinesis Data Streams は、プロデューサーがストリーム内に入力した機密データを自動的に暗号化できます。Kinesis Data Streams は、AWS KMS マスターキーを暗号化に使用します。詳細については、「サーバー側の暗号化の使用 」を参照してください。

注記

暗号化されたストリームに対して読み書きを行うために、プロデューサーおよびコンシューマーアプリケーションにはマスターキーへのアクセス許可が必要です。プロデューサーおよびコンシューマーアプリケーションにアクセス許可を付与する方法については、「ユーザー生成 KMS マスターキーを使用するためのアクセス許可」を参照してください。

注記

サーバー側の暗号化を使用すると、AWS Key Management Service (AWS KMS) の料金が発生します。詳細については、「AWS Key Management Service の料金」を参照してください。

このページの内容: