Amazon Kinesis Data Streams を使用すると、特定のニーズに合わせてストリーミングデータを処理、分析するカスタムアプリケーションを構築できます。Kinesis データストリームに継続的にデータを入力するように何十万個ものデータプロデューサーを設定できます。例えば、ウェブサイトのクリックストリーム、アプリケーションログ、ソーシャルメディアフィードなどです。1 秒に満たずに、Amazon Kinesis アプリケーションで、ストリームからデータを読み取って処理できます。

以下のアーキテクチャ図では、Amazon Kinesis Data Streams をビッグデータソリューションのゲートウェイとして使用しています。さまざまな送信元からのデータが Amazon Kinesis ストリームに配置され、ストリームのデータはさまざまな Amazon Kinesis アプリケーションによって利用されます。この例では、あるアプリケーション(黄色)がストリーミングデータに対してリアルタイムダッシュボードを実行しています。別のアプリケーション(赤色)は、単純な集約を実行し、処理済みデータを Amazon S3 に送信しています。Amazon S3 のデータはさらに処理され、複雑な分析を行うために Amazon Redshift に保存されます。3 つ目のアプリケーション(緑色)は、raw データを Amazon S3 に送信しています。そのデータは、低コストで長期間保管するために Amazon Glacier にアーカイブされます。この 3 つのデータ処理パイプラインはすべて同時かつ並列に動作しています。Amazon Kinesis Data Streams では、パフォーマンスを犠牲にすることなく、データストリームのコンシューマをソリューションに必要な数のみ使用できます。

kinesis-architecture-crop

シャードとは、Amazon Kinesis ストリームの基本的なスループットの単位です。1 シャードは、1 MB/秒のデータ入力と 2 MB/秒のデータ出力の能力を提供します。1 つのシャードは 1 秒当たり最大 1,000 件の PUT レコードをサポートできます。ストリームを作成するときに、必要なシャードの数を指定します。たとえば、2 シャードのストリームを作成できます。このストリームは、データ入力のスループットが 2 MB/秒、データ出力のスループットが 4 MB/秒で、1 秒間に最大 2,000 件の PUT レコードに対応できます。Amazon Kinesis Data Streams でシャードレベルのメトリクスをモニタリングし、ストリームをリシャーディングすることにより、データスループットの変化に合わせてストリームにシャードを動的に追加することや、ストリームから削除することが可能です。

レコードとは、Amazon Kinesis ストリームに保存されるデータの単位です。レコードは、シーケンス番号、パーティションキー、データ BLOB で構成されています。データ BLOB はデータ生成元がストリームに追加する、処理対象のデータです。データ BLOB(Base64 デコーディングの後のデータペイロード)の最大サイズは、1 メガバイト (MB) です。

パーティションキーは、データレコードを分離してストリームの異なるシャードにルーティングするために使用されます。パーティションキーは、データを Amazon Kinesis ストリームに格納するときにデータ生成元によって指定されます。例えば、2 つのシャード(シャード 1 とシャード 2)で構成される Amazon Kinesis ストリームがあるものとします。2 つのパーティションキー(キー A とキー B)を使用し、キー A のデータレコードはすべてシャード 1 に追加され、キー B のデータレコードはすべてシャード 2 に追加されるように、データ生成元を設定できます。

シーケンス番号とは、各データレコードの一意の識別子です。データプロデューサーが PutRecord または PutRecords API を呼び出してデータを Amazon Kinesis データストリームに追加すると、Amazon Kinesis Data Streams によってシーケンス番号が割り当てられます。同じパーティションキーのシーケンス番号は一般的に、時間の経過とともに大きくなります。PutRecord または PutRecords リクエスト間の期間が長くなるほど、シーケンス番号は大きくなります。


アマゾン ウェブ サービスにサインアップした後、次の方法で Amazon Kinesis Data Streams の使用を開始できます。

  • Amazon Kinesis マネジメントコンソールまたは Amazon Kinesis CreateStream API を使用して Amazon Kinesis ストリームを作成します。
  • Amazon Kinesis ストリームに連続的にデータを格納するように、データプロデューサーを設定します。
  • Amazon Kinesis ストリームからデータを読み取って処理するように Amazon Kinesis アプリケーションを構築します。

データプロデューサーは、Amazon Kinesis データストリームに Amazon Kinesis Data Streams API、Amazon Kinesis Producer Library (KPL)、または Amazon Kinesis Agent を介してデータを格納できます。

 

Amazon Kinesis Data Streams には、データを Amazon Kinesis ストリームに入力するために PutRecordPutRecords という 2 種類の API が準備されています。PutRecord では 1 回の API 呼び出し内で単一のデータレコードを扱えます。PutRecords API では 1 回の API 呼び出し内で複数のデータレコードを扱えます。

Amazon Kinesis Producer Library (KPL) とは、Amazon Kinesis ストリームにデータを格納するのに役立つ、使いやすく、高度な設定が可能なライブラリです。Amazon Kinesis Producer Library (KPL) は、最低限のクライアントリソースを使用して、高いプロデューサースループットを素早く実現できる、シンプルで非同期の、信頼のおけるインターフェイスを提供します。

Amazon Kinesis Agent は、データを収集して Amazon Kinesis に送る機能を簡単に実現する、事前に構築された Java アプリケーションです。このエージェントは、ウェブサーバー、ログサーバーおよびデータベースサーバーなど、Linux ベースのサーバー環境にインストールできます。エージェントによって特定のファイルがモニタリングされ、継続的にデータがストリームに送られます。


Amazon Kinesis アプリケーションとは、Amazon Kinesis ストリームからのデータを読み取って処理するデータコンシューマです。Amazon Kinesis アプリケーションは、Amazon Kinesis API または Amazon Kinesis Client Library (KCL) を使用して構築できます。

Amazon Kinesis クライアントライブラリ(KCL)とはビルド済みのライブラリであり、これを使用すると Amazon Kinesis ストリームからデータを読み取って処理する Amazon Kinesis アプリケーションを簡単に作成できます。KCL は、ストリームボリュームの変化への適応、ストリーミングデータの負荷分散、分散サービスの調整、データ処理の耐障害性などの複雑な問題に対応します。KCL を利用することで、Amazon Kinesis アプリケーションの構築中にビジネスロジックに集中できます。

Amazon Kinesis コネクタライブラリとはビルド済みのライブラリであり、これを使用すると Amazon Kinesis を他の AWS サービスやサードパーティ製ツールと簡単に統合できるようになります。Amazon Kinesis コネクタライブラリを使用するには、Amazon Kinesis クライアントライブラリ(KCL)が必要です。このライブラリの現在のバージョンでは、Amazon DynamoDBAmazon RedshiftAmazon S3Elasticsearch に対するコネクタが提供されています。またライブラリには、各タイプのサンプルコネクタと、サンプルを実行するための Apache Ant ビルドファイルも含まれています。

Amazon Kinesis Storm Spout はビルド済みのライブラリで、Amazon Kinesis Data Streams と Apache Storm を簡単に統合できます。Amazon Kinesis Storm Spout の現在のバージョンは、Amazon Kinesis ストリームからデータをフェッチし、そのデータをタプルとして送出します。信頼性が高くスケーラブルなストリームキャプチャ、ストレージ、および再生サービスとして Amazon Kinesis Data Streams を活用するには、Spout を Storm トポロジに追加します。


Amazon Kinesis Data Streams は Amazon CloudWatch と統合されているため、Amazon Kinesis データストリームとデータストリーム内のシャードの CloudWatch メトリクスを収集、表示、分析できます。Amazon Kinesis Data Streams のメトリクスの詳細については、Amazon CloudWatch による Amazon Kinesis Streams サービスのモニタリングを参照してください。

Amazon Kinesis Data Streams は、AWS Identity and Access Management (IAM) と統合されています。IAM は、AWS の各種サービスとリソースへのユーザーアクセスを安全に制御するサービスです。例えば、特定のユーザーまたはグループだけに Amazon Kinesis ストリームへのデータの追加を許可するポリシーを作成できます。Amazon Kinesis ストリームのアクセスの管理と制御に関する詳細については、「Controlling Access to Amazon Kinesis Resources using IAM」を参照してください。

Amazon Kinesis Data Streams は AWS CloudTrail と統合されています。AWS CloudTrail は、ユーザーのアカウントに対する AWS API コールを記録してログファイルを提供するサービスです。API コールのログおよびサポートされる Amazon Kinesis API のリストの詳細については、AWS CloudTrail を使用した Amazon Kinesis API コールのログ記録を参照してください。

VPC エンドポイントを作成すると、Amazon Virtual Private Cloud (VPC) から Kinesis Data Streams API にプライベートでアクセスできます。VPC エンドポイントを使うと、VPC と Kinesis Data Streams の間のルーティングが AWS ネットワークによって処理されます。インターネットゲートウェイ、NAT ゲートウェイ、VPN 接続は必要ありません。Kinesis Data Streams で使用される VPC エンドポイントの最新世代では、AWS PrivateLink が使用されています。AWS PrivateLink は、VPC でのプライベート IP と Elastic Network Interface (ENI) を使用することにより、AWS のサービス間でのプライベート接続を実現するテクノロジーです。詳細については、AWS PrivateLink のドキュメントを参照してください。

サーバー側の暗号化またはクライアント側の暗号化を使用して、Kinesis Data Streams に格納したデータを暗号化できます。サーバー側の暗号化は、ストリームからデータの格納と取得を行う際に自動的にデータを暗号化および復号化する、完全に管理された機能です。また、ストリームにデータを格納する前に、クライアント側でデータを暗号化することもできます。詳細については、Kinesis Data Streams のよくある質問にあるセキュリティセクションを参照してください。

Amazon Kinesis では、リソースとコストの管理が容易になるように Amazon Kinesis データストリームにタグを付けることができます。タグは、AWS リソースの整理に役立つ、キーと値のペアとして表されるユーザー定義のラベルです。例えば、コストセンター別に Amazon Kinesis データストリームにタグを付けることにより、コストセンターに基づいて Amazon Kinesis のコストを分類および追跡できます。詳細については、Amazon Kinesis Data Streams でのストリームのタグ付けを参照してください。