どちらもストリーミングデータを処理・転送するためのサービスだが、目的や使い勝手、制御の自由度に違いがある。
※おおまかな違いを知ることを目的としており、細かい部分には触れてない。
ざっくりイメージ
Kinesis Data Streams ※処理が目的
→ポストに郵便物を集荷するだけ。誰かが取りに行って処理・配達しないといけない。
Data Firehose ※保存が目的
→ポストに郵便物を集荷して、配達までしてくれる。
比較表
| 項目 | Kinesis Data Streams | Data 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) のためのストリーミングデータパイプラインを作成します。
