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

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

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

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

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

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

Kinesis Streams の用語

Kinesis Stream

Kinesis stream は、データレコードの順序付けられたシーケンスです。ストリーム内の各レコードには、Kinesis Streams によってシーケンス番号が割り当てられます。ストリーム内のデータレコードはシャードに配分されます。

データレコード

データレコードは、Kinesis stream に格納されるデータの単位です。データレコードは、シーケンス番号パーティションキー、データ BLOB(変更不可のバイトシーケンス)で構成されます。Kinesis Streams では、BLOB 内のデータが検査、解釈、変更されることはありません。データ BLOB は 最大 1 MB にすることができます。

保持期間

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

プロデューサー

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

コンシューマー

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

Amazon Kinesis Streams Applications

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

Amazon Kinesis Streams application は、Kinesis Client Library または Kinesis Streams API を使用して開発できます。

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

シャード

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

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

パーティションキー

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

シーケンス番号

各データレコードはそのシャード内で一意のシーケンス番号があります。シーケンス番号は、client.putRecords または client.putRecord によってストリームに書き込んだ後に、Kinesis Streams によって割り当てられます。同じパーティションキーのシーケンス番号は一般的に、時間の経過とともに大きくなります。書き込みリクエスト間の期間が長くなるほど、シーケンス番号は大きくなります。

注記

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

Kinesis Client Library

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

アプリケーション名

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

サーバー側の暗号化

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

注記

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

注記

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

このページの内容: