AWS入門ブログリレー2024〜 Amazon Data Firehose(旧 Amazon Kinesis Data Firehose)編〜

Amazon Data Firehose(旧 Amazon Kinesis Data Firehose)について 2024 年時点の情報をまとめてみました。AWS サービス入門記事として是非ご活用下さい。
2024.05.02

コーヒーが好きな emi です。

当エントリは弊社 AWS 事業本部による『AWS 入門ブログリレー 2024』の 36 日目のエントリです。

このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。 AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。

では、さっそくいってみましょう。今回のテーマは『Amazon Data Firehose(旧 Amazon Kinesis Data Firehose)』です。

Amazon Data Firehose の概要

Amazon Data Firehose(以降、Data Firehose と省略)は、ストリーミングデータを収集・変換し、サポートされている AWS サービスやサードパーティサービスなど分析用のデータストアに配信できるフルマネージドサービス です。データ量の増減に合わせて自動でスケールするため、ユーザーが冗長構成などを考える必要はありません。

  • S3
  • Redshift
  • OpenSearch Service
  • Splunk
  • カスタム HTTP エンドポイント
  • Datadog
  • Dynatrace
  • New Relic


など、さまざまなサービスにデータを配信できます。サポートされている送信元・送信先は以下ドキュメントに一覧化されています。

名称変更

2024/2/9、Amazon Kinesis Data Firehose から Amazon Data Firehoseに名称が変わり、「Kinesis」が含まれなくなりました。

fire hose は「消火ホース」

fire hose は「消火ホース」の意味です。火災用給水栓から火災現場まで水を運ぶ大きなホースのことで、転じて大量のデータストリームを表すこともあるようです。
Data Firehose のアイコンも、消化ホースのように見えますね。大量の水が放出されるように、データストリームがドバーーーーーッと配信される様をイメージしましょう。

Data Firehose のアーキテクチャ

ストリーミングデータとは

ストリーミングデータとは、連続的に生成され、リアルタイムに処理する必要があるデータのことを指します。ソーシャルメディアの投稿、IoT センサーからのデータ、クリックストリームデータなどが例として挙げられます。

Firehose ストリーム

Data Firehose を使用するにはまず Firehose ストリームを作成します。作成した Firehose ストリームにデータを送信します。
Firehose ストリームではデータ配信先を一つ指定します。

レコード

データプロデューサーが Firehose ストリームに送信する対象のデータをレコードと呼びます。レコードのサイズは最大 1000 KB です。

1 レコードのサイズが 1000 KB を超える場合はアプリケーション側で圧縮やレコード分割をしたり、Lambda 等でデータ分割処理を行う必要があります。

(データ)プロデューサー

Firehose ストリームにレコードを送信する側のサービスを(データ)プロデューサーと言います。例えば、Firehose ストリームにログデータを送信する Web サーバーはデータプロデューサーです。

バッファサイズおよびバッファの間隔

Data Firehose は受信するストリーミングデータを特定のサイズまたは一定期間バッファしてから、送信先に配信します。

  • バッファサイズ
    • バッファサイズ大:コスト低、レイテンシー高
    • バッファサイズ小:配信が高速、コスト高、レイテンシー低
    • 最小:1 MiB、最大:128 MiB。推奨:5 MiB

  • バッファ間隔
    • 間隔が長い:データを収集する時間が長くなり、データのサイズが大きくなる
    • 間隔が短い:データが送信される頻度が高くなり、より短期サイクルでデータアクティビティを確認する場合のメリットが多くなる
    • 最小:0 秒、最大:900 秒。推奨:300 秒

データ変換

Lambda 関数を呼び出してデータを変換し、変換されたデータをデータ送信先に配信できます。Firehose ストリームを作成するときにデータ変換を有効にできます。
Lambda 関数の例や設定方法は以下ブログを参照ください。

使い方

データプロデューサーごとにいくつか使い方を紹介します。

Data Firehose への直接配信が組み込まれている AWS サービス

AWS WAF のように、Data Firehose への直接配信が組み込まれている AWS サービスもあります。

以下のようにマネジメントコンソールで「Amazon Data Firehose」をダイレクトに指定できます。すごく簡単ですね。

CloudWatch Logs から Data Firehose に配信

CloudWatch Logs に送信したログデータを、CloudWatch Logs サブスクリプションフィルター を介して Data Firehose に配信できます。

詳細な設定方法は以下ブログを参照ください。

Fluentd から Data Firehose に配信

Fluentd はオープンソースの高機能かつ柔軟なログ収集・転送ツールです。
Fluentd を使用すると、アプリケーションやシステムが生成するログデータを効率的に処理し、異なる場所に送ることができます。

Fluentd では aws-fluent-plugin-kinesis というプラグインを導入することで、Data Firehose ストリームにログを直接配信することができます。

また、以下の データレイクハンズオン の Lab4 では Fluentd から Data Firehose へのログ配信を体験できます。


データレイクハンズオン より図を引用

Fluent Bit から Data Firehose に配信

Fluent Bit は、Fluentd をベースに構築された軽量で高性能なログ収集・転送ツールです。
Fluent Bit は Fluentd の機能を継承しつつ、より軽量でリソース消費の少ない設計となっています。コンテナ化された環境や組み込みシステムなど、リソースに制約のある環境でも効率的にログを収集・送信することができます。 Fluent Bit と Fluentd の違いは以下ドキュメントにも記載があります。
CloudWatch Logs へログを送信する DaemonSet として Fluent Bit を設定する - Fluentd を既に使用している場合の違い - Amazon CloudWatch

Fluent Bit をベースに構築されているコンテナログを管理するためのマネージドサービスで、FireLens というものがあります。
FireLens は AWS サービスとのネイティブな統合、設定の簡素化、アクセス制御、自動スケーリングなどの機能を追加することで、AWS 環境でのログ管理をさらに容易にします。
FireLens を使って、ECS コンテナから Data Firehose へログを直接配信することができます。

FireLens を使った ECS コンテナから Data Firehose へのログ配信の設定方法は以下ブログを参照ください。

Fluent Bit の公式マニュアルはこちらです。

料金

Data Firehose の主な機能はデータの取り込みと配信です。料金は主にデータ取り込みで発生し、配信に関しては VPC 配信や動的パーティショニングなどのオプション機能を使うと料金がかかります。
取り込み方法によって料金が異なるため、以下に各ケースに分けて説明します。

1. Direct PUT および Kinesis Data Streams (KDS) をソースとする取り込み

取り込まれたデータは 5KB 単位で課金されます。
例えば、3KB のレコードは 5KB として、12KB のレコードは 15KB として計算されます。

2024/5/2 時点の東京リージョンにおける Direct PUT の料金は以下です。

取り込みデータサイズ GB あたりの料金
最初の 500 TB/月 0.036USD
次の 1.5 PB/月 0.031USD
次の 3 PB/月 0.025USD
5 PB/月を超えた場合 お問い合わせ

2. Amazon MSK (Managed Streaming for Apache Kafka) をソースとする取り込み

取り込まれたデータは、取り込まれたバイト数または配信されたバイト数のどちらか大きい方に基づいて GB 単位で計算されます。レコードサイズの四捨五入は行われません。

3. Vended Logs をソースとする取り込み

取り込まれたデータ量に基づいて GB 単位で課金されますが、5KB 単位での増分計算は行われません。
Vended Logs については以下ブログを参照ください。

おわりに

以上、『AWS 入門ブログリレー 2024』の 36 日目のエントリ『Amazon Data Firehose(旧 Amazon Kinesis Data Firehose)』編でした。 次回、5/7 (火)は弊社 丸毛篤史 による「Amazon DynamoDB」の予定です!

参考