「Amazon Kinesis Data Streams」と「Amazon Data Firehose」の違い

どちらもストリーミングデータを処理・転送するためのサービスだが、目的や使い勝手、制御の自由度に違いがある。
※おおまかな違いを知ることを目的としており、細かい部分には触れてない。

ざっくりイメージ

Kinesis Data Streams ※処理が目的
→ポストに郵便物を集荷するだけ。誰かが取りに行って処理・配達しないといけない。

Data Firehose ※保存が目的
→ポストに郵便物を集荷して、配達までしてくれる。

比較表

項目Kinesis Data StreamsData Firehose
使い方の自由度高い(手動制御が多い)低い(フルマネージド)
処理粒度リアルタイム(ミリ秒単位)数秒~数分の遅延あり
データ処理実装が必要ある程度自動でやってくれる
データ保持デフォルト24H、最大7日間
※一時的なバッファ(長期保管向けではない)
保持しない(即宛先へ送信)
宛先の数複数可(自由に決めて実装)単一(1ストリーム=1保存先)
宛先の種類ほぼ無制限
(Lambda経由で何でも可能)
限定的

※2025年6月時点では以下
・Amazon S3
・Amazon Redshift
・Amazon OpenSearch Service
・HTTP エンドポイント

※Kinesis全般サーバレスで、負荷が高まると自動拡張してくれる。

Amazon Kinesis Data Streams

リアルタイムで処理・分析・フィルタなどをした上で、保存や通知に進むための中継地点。
基本的に何かしらの処理を加える前提でデータを取り込む。

保存までに挟まれる処理の例

中継処理の例
Lambda(最も一般的)柔軟なデータ加工・条件分岐・他サービス連携など
Amazon Managed Service for Apache Flink
(旧:Kinesis Data Analytics)
SQLでのリアルタイム集計・整形など
Firehoseに連携KDS → Firehose → 保存
※リアルタイム性は不要で分析したいときなど
自前のアプリなど独自のロジックで処理して外部システムへ連携など

Amazon Data Firehose

リアルタイム性はほどほどに、データを集めて・整えて・送り届ける。
基本的に受け取ったデータは自動処理後に保存される

Data Firehoseを経由させるメリット

以下のような便利な中間処理を噛ませることができる。

処理の例説明
バッファ制御一定の「サイズ」または「時間」に達したらまとめて保存
データ変換Lambda関数を挟んで保存前にデータを変換
※複雑なロジックや分岐・状態管理には向かない
失敗時の自動再試行配信に失敗しても一定回数・一定時間自動で再試行
モニタリング・メトリクス取得CloudWatchと統合して処理状況(配信成功率や遅延)を確認
エラーログ出力・バックアップLamdba処理や再試行に失敗した場合にCloudWatch Logsへ記録
失敗したデータをS3に保存(後の復旧に使用)

参考

Amazon Kinesis Data Streams(リアルタイム分析向け大規模データを収集)| AWS
Amazon Kinesis Data Streams は、フルマネージドのサーバーレスデータストリーミングサービスであり、さまざまなストリーミングデータをあらゆる規模でリアルタイムに保存および取り込みます。
ストリーミングデータパイプライン – Amazon Data Firehose (Firehose) – AWS
Amazon Data Firehose を使用して、データレイクと分析ツールへのリアルタイムの取り込み (ストリーミング ETL) のためのストリーミングデータパイプラインを作成します。
タイトルとURLをコピーしました