
【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 と組み合わせてストリームデータを即時分析・処理したりできます。
重要用語
関連ページ
Kinesis Data Analytics
ユースケース
| リアルタイムログ収集基盤 | アプリケーションログやクリックログ、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.Success | GetRecords成功 |
| PutRecord.Failure | PutRecord失敗 |
| PutRecord.Success | PutRecord成功 |
| PutRecords.Failure | PutRecords失敗 |
| PutRecords.Success | PutRecords成功 |
| 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時間を超える長期保持 |