メインコンテンツに移動

Amazon Kinesis Data Streams

Amazon Kinesis Data Streams の使用を開始

使用開始

Amazon Kinesis Data Streams は、ストリーミングデータ用に最適化された、非常にスケーラブルで高い耐久性を持つデータインジェストおよびデータ処理サービスです。Kinesis データストリームに継続的にデータを入力するように何十万個ものデータプロデューサーを設定できます。Amazon Kinesis アプリケーションは数ミリ秒以内にデータを利用できるようになり、それらのアプリケーションは生成された順にデータレコードを受け取ります。

Amazon Kinesis Data Streams には、Amazon S3 といった AWS データレイクへほぼリアルタイムでストリーミングデータを変換、提供する Amazon Kinesis Data Firehose、マネージド型ストリームを処理する Amazon Managed Service for Apache Flink、イベントまたはレコードを処理する AWS Lambda、プライベート接続の AWS PrivateLink、メトリクスやログを処理する Amazon Cloudwatch、サーバー側の暗号化を行う AWS KMS など、多数の AWS サービスが統合されています。

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

Amazon Kinesis Data Streams の使用を開始

Amazon Kinesis Data Streams の最新情報を見る

PoC (実証支援) または評価に関するサポートをリクエスト

動画

Kinesis Data Streams の使用

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

主要な概念

すべて開く

データプロデューサーは通常、生成されたデータレコードを Kinesis データストリームに送信するアプリケーションです。データプロデューサーは、パーティションキーをレコードに割り当てます。パーティションキーは、最終的にどのシャードがデータストリームのデータレコードを取り込むか決定します。

データコンシューマーは、データが生成されると、ストリーム内のすべてのシャードからデータを取得する分散型 Kinesis アプリケーションまたは AWS サービスです。多数のデータコンシューマーがシャード内の最新データを取得し、リアルタイムのデータ分析またはデータ処理を可能にします。

データストリームはシャードの論理グループです。データストリーム内のシャードの数に制限はありません (さらに必要な場合は制限の引き上げをリクエストしてください)。データストリームは、デフォルトで 24 時間、またはオプションで最大 365 日間データを保持します。

シャードとは、Amazon Kinesis データストリームの基本的なスループットの単位です。

  • シャードはアペンド専用のログで、ストリーミング機能の単位です。シャードには、到達時間順に並んだレコードのシーケンスが含まれています。
  • 1 つのシャードは 1 秒あたり最大 1000 のデータレコードまたは 1MB/秒を取り込むことができます。シャードを追加して取り込み能力を上げることができます。
  • AWS コンソール、 UpdateShardCount API を使用するか、AWS Lambda 経由で自動スケーリングをトリガーするか、自動スケーリングユーティリティを使用して、データスループットの変化に応じてストリームにシャードを動的に追加または削除します。
  • コンシューマーが拡張ファンアウトを使用する場合、シャードは、拡張ファンアウトを使用するために登録された各データコンシューマーに 1MB/秒のデータ入力と 2MB/秒のデータ出力を提供します。
  • コンシューマーが拡張ファンアウトを使用しない場合、シャードは、1MB/秒のデータ入力と 2MB/秒のデータ出力を提供します。この出力は拡張ファンアウトを使用しないコンシューマーと共有されます。
  • ストリームを作成するときに必要なシャード数を指定します。シャード数はいつでも変更できます。たとえば、2 シャードのストリームを作成できます。拡張ファンアウトを使用する 5 データコンシューマーを持つ場合、このストリームは合計データ出力最大 20 MB/秒を提供できます (2 シャード x 2MB/秒 x 5 データコンシューマー)。データコンシューマーが拡張ファンアウトを使用していない場合、このストリームは 2MB/秒のデータ入力と 4MB/秒のデータ出力のスループットを持ちます。すべてのケースで、このストリームは 1 秒あたり最大 2000 PUT レコードまたは 2MB/秒の取り込みができ、先に上限に達した方になります。
  • Amazon Kinesis Data Streams でシャードレベルメトリクスをモニタリングできます。

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

パーティションキーは通常、ユーザー ID またはタイムスタンプなど、意味を持つ ID です。データプロデューサーによって指定され、データを Amazon Kinesis データストリームに配置します。コンシューマーはパーティションキーを使用し、パーティションキーに関連する履歴を再生または構築できるので、コンシューマーに便利です。パーティションキーは、データレコードを分離してストリームの異なるシャードにルーティングするためにも使用されます。たとえば、2 つのシャード (シャード 1 とシャード 2) で構成される Amazon Kinesis データストリームがあるものとします。2 つのパーティションキー (キー A とキー B) を使用し、キー A のデータレコードはすべてシャード 1 に追加され、キー B のデータレコードはすべてシャード 2 に追加されるように、データプロデューサーを設定できます。

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

Streams へのデータの格納

すべて開く

Amazon Kinesis データジェネレータを使用して、サンプルデータを Kinesis データストリームまたは Kinesis データファイアホースに入力します。

Amazon Kinesis データストリームには、Amazon Kinesis ストリームにデータを入力するための 2 つの API、PutRecord と PutRecords が用意されています。PutRecord では 1 回の API 呼び出しでデータレコードを 1 つだけ取扱いできます。PutRecords API では 1 回の API 呼び出し内で複数のデータレコードを取扱いできます。

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

Amazon Kinesis エージェントはビルド済みの Java アプリケーションで、データを簡単に収集して Amazon Kinesis ストリームに送信できます。このエージェントは、ウェブサーバー、ログサーバー、データベースサーバーなど、Linux ベースのサーバー環境にインストールできます。エージェントによって特定のファイルがモニタリングされ、継続的にデータがストリームに送られます。

アプリケーションの実行または独自のアプリケーションの構築

すべて開く

AWS サービスを使用してフルマネージド型のストリーム処理アプリケーションを実行するか、または独自のアプリケーションを構築します。

Amazon Kinesis Data Firehose は、ストリーミングデータを確実に変換してデータストアや分析ツールにロードする最も簡単な方法です。Kinesis データストリームを Kinesis data firehose のソースとして使用できます。

Lambda 関数をサブスクライブして、Kinesis データストリームから自動的にレコードを読み取ることができます。  AWS Lambda は通常、レコードごと (イベントベースとも呼ばれます) のストリーム処理に使用されます。

Amazon Kinesis クライアントライブラリ (KCL) は、Amazon Kinesis データストリームからデータを読み込んで処理するための Amazon Kinesis アプリケーションを簡単に構築するのに役立つビルド済みのライブラリです。KCL は、ストリームボリュームの変化への適応、ストリーミングデータの負荷分散、分散サービスの調整、データ処理の耐障害性などの複雑な問題に対応します。KCL を利用することで、Amazon Kinesis アプリケーションの構築中にビジネスロジックに集中できます。 KCL 2.0 以降では、低レイテンシーの HTTP/2 ストリーミング API と拡張ファンアウトを使用してストリームからデータを取得できます。

Amazon Kinesis コネクタライブラリは、Amazon Kinesis を他の AWS サービスやサードパーティツールと簡単に統合するのに役立つビルド済みのライブラリです。Amazon Kinesis コネクタライブラリを使用するには、Amazon Kinesis クライアントライブラリ (KCL) が必要です。このライブラリの現在のバージョンには、 Amazon DynamoDB、Amazon Redshift、Amazon S3、および Amazon Elasticsearch Service へのコネクタが用意されています。またライブラリには、各タイプのサンプルコネクタと、サンプルを実行するための Apache Ant ビルドファイルも含まれています。

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

ストリームの管理

すべて開く

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

拡張ファンアウトにより、並行してストリームから読み取るコンシューマー数を調整しながら、パフォーマンスを維持できます。拡張ファンアウトと HTTP/2 データ取得 API を使用して、通常 70 ミリ秒以内にデータを複数のアプリケーションに届けます。

サーバー側の暗号化またはクライアント側の暗号化を使用して、Kinesis Data Streams に格納したデータを暗号化できます。  サーバー側の暗号化はフルマネージド型の機能で、データストリームからデータを送受信するときにデータを自動的に暗号化および復号化します。または、データをデータストリームに入れる前に、クライアント側でデータを暗号化することもできます。詳細については、Kinesis データストリームに関する FAQ の「セキュリティ」セクションを参照してください。

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

Amazon Kinesis Data Streams は、ユーザーの AWS サービスとリソースへのアクセスを安全に制御できるようにするサービスである AWS アイデンティティおよびアクセス管理 (IAM) と統合されています。たとえば、特定のユーザーまたはグループだけに Amazon Kinesis データストリームへのデータの追加を許可するポリシーを作成できます。Amazon Kinesis データストリームのアクセス管理と制御の詳細については、「IAM を使用した Amazon Kinesis リソースへのアクセスの制御」を参照してください。

Amazon Kinesis データストリームは、アカウントの AWS API 呼び出しを記録してログファイルを配信するサービスである AWS CloudTrail と統合されています。API コールロギングの詳細とサポートされている Amazon Kinesis API のリストについては、「AWS CloudTrail を使用した Amazon Kinesis API コールのロギング」を参照してください。

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

チュートリアル

すべて開く

このチュートリアルでは、Amazon Kinesis データストリームの作成、株取引のシミュレーションデータのストリームへの送信、データストリームのデータを処理するアプリケーションの作成といった方法について説明します。 

注目のプレゼンテーション

すべて開く

Amazon Kinesis を使用すると、ストリーミングデータをリアルタイムに収集、処理、分析することが簡単になるため、インサイトを適時に取得して新しい情報に迅速に対応できます。このセッションでは、データの取り込みに Kinesis Streams、リアルタイムの処理に Kinesis Analytics、永続性のために Kinesis Firehose を使用した、エンドツーエンドのストリーミングデータソリューションを紹介します。ストリーミングデータを使用する SQL クエリの記述方法を詳しく確認し、Kinesis Analytics アプリケーションを最適化およびモニタリングするためのベストプラクティスについて説明します。最後に、システム全体のコストを算出する方法を説明します。

セッションの録画を見る | プレゼンテーションをダウンロード

AWS のビッグデータウェブサービスに関する知識を強化し、はじめてのビッグデータアプリケーションをクラウドでリリースしましょう。 取り込み、保存、処理、および可視化で構成されるデータバスとしてビッグデータ処理を簡素化する方法を説明します。AWS マネージドサービス (Amazon Athena、Amazon Kinesis、Amazon DynamoDB、Amazon S3 など) を使用してビッグデータアプリケーションを構築します。また、ビッグデータアプリケーションのアーキテクチャの設計パターンを確認し、アプリケーションを自分で再構築してカスタマイズできるように、自習用ラボへのアクセス権を付与します。このセッションを最大限活用するためには、自分のノート PC を持参し、AWS のサービスを理解している必要があります。

プレゼンテーションをダウンロードする

近年、コネクテッドデバイスの数とリアルタイムデータソースの数は、爆発的に増加しています。そのため、データが継続的に生成され、生成されるスピードも加速しています。ビジネスでは、このようなデータを使用するために数時間または数日待つことはできません。貴重なインサイトを取得するためには、このデータを即座に利用して新しい情報に迅速に対応する必要があります。このワークショップでは、ストリーミングデータソースを利用して、ほぼリアルタイムで分析、対応する方法を説明します。実際のストリーミングデータのシナリオに関する要件がいくつか提示され、Amazon Kinesis、AWS Lambda、Amazon SNS などのサービスを使用して、要件を満たすソリューションを作成するタスクを実行します。

プレゼンテーションをダウンロードする

データから実行可能なインサイトを取得する時間を短縮することは、すべてのビジネスにとって重要であり、バッチデータ分析ツールを使用しているお客様は、ストリーミング分析のメリットを活用しようとしています。データウェアハウスやデータベースから、リアルタイムのソリューションにアーキテクチャを拡張するためのベストプラクティスをご確認ください。Amazon Kinesis を使用してリアルタイムデータのインサイトを取得し、Amazon Aurora、Amazon RDS、Amazon Redshift、Amazon S3 と統合させる方法をご確認ください。Amazon Flex チームが、Amazon 配信ドライバーで使われる Amazon Flex モバイルアプリケーションでストリーミング分析を使用して、毎月何百万ものパッケージを時間どおりに配信した方法を説明します。バッチ処理システムからリアルタイムシステムへの移行を可能にし、既存のバッチデータをストリーミングデータに移行するという課題を克服したアーキテクチャについて、およびリアルタイム分析を活用する方法について説明します。

セッションの録画を見る | プレゼンテーションをダウンロード

市場で勝利し、差別化されたカスタマーエクスペリエンスを提供するには、企業はリアルタイムでライブデータを使用し、意思決定の迅速化を促進する必要があります。このセッションでは、一般的なストリーミングデータ処理のユースケースとアーキテクチャについて説明します。まず、ストリーミングデータと AWS のストリーミングデータ機能の概要について説明します。次に、幾つかのお客様の事例と、リアルタイムストリーミングアプリケーションを確認します。最後に、ストリーミングデータの主なユースケースにおける、一般的なアーキテクチャと設計パターンについて説明します。

セッションの録画を見る | プレゼンテーションをダウンロード

注目のソリューション

Amazon Kinesis 向け AWS ストリーミングデータソリューションは、データがプロデューサー、ストリーミングストレージ、コンシューマー、および宛先を通過する AWS CloudFormation テンプレートを提供します。さまざまなユースケースとビジネスニーズをサポートするために、このソリューションでは 4 つの AWS CloudFormation テンプレートが提供されています。テンプレートは、ダッシュボードとアラームを使用して機能を監視し、データを保護するためのベストプラクティスを適用するように構成されています。