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 の料金」を参照してください。

このページの内容: