Amazon Data Firehose
ストリームをデータストアへ取り込み
Amazon Data Firehose(旧 Kinesis Data Firehose)はストリーミングデータを受け取り、自動的にバッファリング、圧縮、変換して、S3、Redshift、OpenSearch、Splunk、HTTP endpoint などにほぼリアルタイムで配信します。
- コスト$ 安い
- 難易度●●●●●
- 未使用でも課金?いいえ
- サーバーレス
- 出題試験SAA · DVA · SOA
たとえるなら荷物を自動で箱詰めして、そのまま倉庫に運び込むベルトコンベアのようなものです。
いつ使う?
✓ 使うべき場面
consumer を書かずに、ログや clickstream を S3/Redshift/OpenSearch に取り込みたいとき。
✗ 避けるべき場面
カスタムのリアルタイム処理や、複数の consumer による再読み込みが必要 → Kinesis Data Streams。
よくある使い方
- アプリケーションログの Parquet 形式での S3 への取り込み
- Redshift への clickstream の送信
- 検索用の OpenSearch へのログ送信
料金はいくら?
- 課金方式: 取り込んだデータの GB 数に応じて課金され、使用する場合はフォーマット変換や VPC への配信の料金が加算されます。
容量の計算時に各レコードは最小ブロック単位に切り上げられるため、非常に小さいレコードは想定より高くつきます。
「コンシューマーのコードなしでログやクリックストリームを S3、Redshift、OpenSearch にニアリアルタイムで自動ロード」なら Data Firehose、「複数のコンシューマーが同じデータを再読み込み、低遅延、独自処理」なら Kinesis Data Streams を選びます。
よくある質問
Data Firehose は Kinesis Data Streams と何が違いますか?
Firehose は配信サービスで、ストリームを受け取り、自動でバッチ化、圧縮、変換して S3、Redshift、OpenSearch、Splunk などに届けます。コンシューマーのコードは不要で自動スケールしますが、再読み込み用にデータは保持しません。Data Streams はデータを保持して複数のコンシューマーが再読み込みでき、独自処理と低遅延が可能ですが、コンシューマーを自分で実装・管理します。
なぜ Firehose はニアリアルタイムなのですか?
Firehose はサイズまたは時間でデータをバッファリングしてから配信するため、遅延は数秒から数十秒以上になります。そのため問題文の「ニアリアルタイム」や「S3 に配信」は Firehose を、「リアルタイム、非常に低遅延」は Data Streams を示すことが多いです。
Firehose はデータをどう変換し、失敗時はどうなりますか?
Lambda をアタッチしてレコードごとに変換でき、S3 への書き込み前に Parquet や ORC へ形式変換すれば Athena のクエリが安くなります。配信に失敗したレコードはバックアップ用の S3 バケットに書き込まれ、再処理できます。入力は API の直接呼び出し、エージェント、Kinesis Data Streams からの読み取りなどです。
関連サービス
SAA-C03 対策
Data Firehose は次の対策モジュールで扱っています: