Kinesis Data Streams

【VPC外リージョンサービス】

Kinesis Data Streams は、高スループットかつ低レイテンシな リアルタイムデータストリーミングサービス です。

データは Producer(プロデューサー) から Stream(ストリーム) に送信され、複数の Shard(シャード) に分散して処理されます。その後、Consumer(コンシューマー)(SDK、Lambda、Kinesis Data Firehose など)がデータを読み取り、リアルタイムに処理や分析を行います。

Kinesis Data Streams は、Partition Key(パーティションキー) に基づいてデータをシャードへ振り分け、各データを Record(レコード) として保持します。それぞれのレコードにはユニークな Sequence Number が割り当てられ、順序性と一意性を担保します。また、データを一定期間再処理できる Retention Period(保持期間) を持ち、必要に応じてリプレイ(再読込)処理が可能です。

Enhanced Fan-Out(拡張ファンアウト) 機能により、複数のコンシューマーが独立したスループットで同時にデータを取得でき、リアルタイム処理の並列化とスケーラビリティを最適化します。

Kinesis Data Streams は、Kinesis Data Firehose と連携して S3、Redshift、OpenSearch などにデータを自動転送したり、Kinesis Data Analytics や Lambda と組み合わせてストリームデータを即時分析・処理したりできます。

重要用語

関連ページ

ユースケース

リアルタイムログ収集基盤アプリケーションログやクリックログ、IoTデバイスからのイベントなどを数秒以内で取り込み、後続のLambdaやFirehoseに連携するリアルタイムストリーム基盤として利用する。
リアルタイムメトリクス・ダッシュボードWebサイトのPV数やゲーム同時接続数などの指標をストリームとして取り込み、集計結果をメモリDBやダッシュボードに反映してリアルタイムに可視化する。
不正検知・アラート処理のトリガークレジットカード決済やログイン試行などのイベントをストリームで処理し、異常なパターンを検知したらLambdaからアラートやブロック処理を行う。

ベストプラクティス

シャード数の適切な設計スループット要件に基づいてシャード数を決定し、必要に応じてスケールする。
レコードキーの分散パーティションキーを工夫してシャードへの負荷を均一にする。
コンシューマーのチェックポイント管理DynamoDBなどでオフセットを管理し、再処理やスケーリングに備える。

高可用性・バックアップ・リトライ

高可用性・バックアップ・リトライ設計のポイント
【デフォルト】AWS内部で冗長化
 ・コントロールプレーン(ストリーム管理インフラ)
 ・シャードデータの自動レプリケーション
 ・データ書き込みの同期レプリケーション
 ・APIエンドポイント
 ・シャードイテレーター管理
複数シャード(最小構成は単一シャード)

セキュリティ

関連サービス設定内容
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)【Configが有効な場合】
ストリーム設定変更履歴・暗号化/保持期間の準拠評価
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
ストリーム削除・変更などのAPI異常検知

ログ・監視

標準メトリクス
メトリクス名説明
GetRecords.IteratorAgeMilliseconds遅延(ミリ秒)
IncomingBytes入力バイト数
IncomingRecords入力レコード数
OutgoingBytes出力バイト数
OutgoingRecords出力レコード数
GetRecords.SuccessGetRecords成功
PutRecord.FailurePutRecord失敗
PutRecord.SuccessPutRecord成功
PutRecords.FailurePutRecords失敗
PutRecords.SuccessPutRecords成功
ReadProvisionedThroughputExceeded読み取りスループット超過
WriteProvisionedThroughputExceeded書き込みスループット超過

制限値(固定値/ハードリミット/ソフトリミット)

固定値制限値
シャード数/ストリーム無制限(実質的)
同時に読み取りできるコンシューマー数/シャード5(標準)、20(拡張)

ハードリミット制限値
シャードあたりの読み取り2 MB/秒、5トランザクション/秒
シャードあたりの書き込み1 MB/秒、1,000レコード/秒
レコードサイズ最大1 MB
データ保持期間24時間(デフォルト)、最大8,760時間(365日)

ソフトリミット制限値
ストリーム数/リージョン50(デフォルト)

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
シャード時間プロビジョニングされたシャードの時間
PUT PayloadストリームへのデータPUT量
拡張ファンアウト拡張ファンアウトコンシューマーの時間とデータ取得
データ保持24時間を超える長期保持
料金計算ツール

公式ページ

AWSドキュメント Kinesis Data Streams