AWS WAFのログ出力先をコスト観点で比較検討してみた

AWS WAFのログ出力先をコスト観点で比較検討してみた

2026.03.30

はじめに

こんにちは。クラウド事業本部の木村です。

AWS WAFのログを有効化する際、出力先としてとりあえず「CloudWatch Logs」を選んでいる方は多いのではないでしょうか。
設定が簡単でLog Insightsによってログの確認がしやすいのですが、この選択によって大きなコスト差が発生しているかもしれません。

今回WAFのログの出力先の設定によるコスト差を確認する機会がありましたので、まとめていきたいと思います。

WAFログの出力先設定の選択肢とコストについて

まずAWS WAFのWebACLに対してロギングを有効化する場合、以下の3種類から出力先を選択することができます。

  • Amazon CloudWatch Logs
  • Amazon S3
  • Amazon Kinesis Data Firehose

出力先によって料金体系が異なります。

2026/3/30時点での、各出力先の単価(~10TB)は以下のとおりです。

最新の価格は公式サイトを参照するようにしてください。
https://aws.amazon.com/jp/cloudwatch/pricing/
https://aws.amazon.com/jp/firehose/pricing/

  • 東京リージョン
出力先 料金体系 概算単価
CloudWatch Logs CWL Vended Logs(CWL配信) 0.76USD/GB
S3 CWL Vended Logs(S3配信) 0.38USD/GB
Kinesis Data Firehose Firehose(Direct Put) 0.036USD/GB
  • バージニア北部リージョン(CloudFrontにWAFを設定している場合)
出力先 料金体系 概算単価
CloudWatch Logs CWL Vended Logs(CWL配信) 0.50USD/GB
S3 CWL Vended Logs(S3配信) 0.25USD/GB
Kinesis Data Firehose Firehose(Direct Put) 0.029USD/GB

AWS WAFのログはCloudWatchとS3に配信する場合、Vended Logsとして扱われます。Vended LogsとはAWSサービスが代わりに発行するログのことで、通常のCloudWatch Logsへの書き込みとは異なる料金体系が適用されます。

この料金だけを見るとFirehoseが格段に安いですが、補正が必要な要素がございますので続けて説明します。

WAFのログが1レコード = 1KBの時の料金比較

2025年9月アップデートにてVended Logsに無料枠が追加

2025年9月のアップデートにてAWS WAFのVended Logsに無料枠が追加されました。

https://aws.amazon.com/about-aws/whats-new/2025/09/aws-waf-free-vended-logs-request-volume/

100万件のWAFリクエストにつき、500MBのVended Logsが無料になるという内容です。記録数によってはログの保管料金でかなりのコストになっていましたので嬉しいアップデートです!

対象はVended Logs取り込みを利用するCloudWatch Logs・S3が対象で、無料枠は月末のAWS請求に基づいて自動で適用されます。

WAFログ1件あたりのサイズが1KB程度であった場合、100万リクエストで1GBのログが発生することになります、
そのうち500MBが無料枠でカバーされることになりますので、先ほどの単価の実質半額程度で利用できることになります。

Firehoseには無料枠がないので、CloudWatchとS3との差が縮まることになります。

Firehoseを選ぶ際のコスト単価に関して

またFirehoseを選択するにあたって注意が必要な点があります。

Firehoseはレコードごとに5KBの最小課金単位があります。~5KBのレコードであれば5KB、5.1KB~10KBであれば10KBという形で5KB毎に繰り上げて計算されます。

WAFログ1件が1KBであるケースでは、実質的に5倍のデータ量として課金されることになります。その場合実効コストは0.18USD/GB(東京リージョン)、0.145USD/GB(バージニア北部リージョン)になる計算です。

再度単価について

WAFのログのレコードが1レコード = 1KBの時、上記の2つの要素を追加して実効コストを計算してみると以下になります。

  • 東京リージョン
出力先 概算単価
CloudWatch Logs 0.36USD/GB
S3 0.19USD/GB
Kinesis Data Firehose 0.18USD/GB
  • バージニア北部リージョン(CloudFrontにWAFを設定している場合)
出力先 概算単価
CloudWatch Logs 0.25USD/GB
S3 0.125USD/GB
Kinesis Data Firehose 0.145USD/GB

一番単価が高価なのはCloudWatch Logsでは変わりがないのですが、バージニア北部リージョンではS3とFirehoseのコストが逆転しています。東京リージョンにおいても差がかなり縮まっておりほとんど差がないと言ってもいい状況かと思います。

1レコード = 1KBであるという前提を置くならば、設定の煩雑さを考慮するとコスト観点ではS3を選択しておくのが良さそうです。

WAFのログが1レコード = 1.5KB,2KBの時の料金比較

ここまで1レコード = 1KBという前提で話をしてきましたが、この容量はWAFの設定によって変動があるため環境によって異なります。

ここでは1レコード = 1.5KBや2KBの場合のコストについても比較したいと思います。

WAFのログが1レコード = 1.5KBの時

  • 東京リージョン
出力先 概算単価
CloudWatch Logs 0.5061USD/GB
S3 0.2531USD/GB
Kinesis Data Firehose 0.12USD/GB
  • バージニア北部リージョン(CloudFrontにWAFを設定している場合)
出力先 概算単価
CloudWatch Logs 0.3333USD/GB
S3 0.1666USD/GB
Kinesis Data Firehose 0.0967USD/GB

WAFのログが1レコード = 2KBの時

  • 東京リージョン
出力先 概算単価
CloudWatch Logs 0.57USD/GB
S3 0.285USD/GB
Kinesis Data Firehose 0.09USD/GB
  • バージニア北部リージョン(CloudFrontにWAFを設定している場合)
出力先 概算単価
CloudWatch Logs 0.375USD/GB
S3 0.1875USD/GB
Kinesis Data Firehose 0.0725USD/GB

このようにレコードの容量によって単価が異なり、1レコードの容量が大きくなればなるほどFirehoseが有利になりそうです。

どれを選ぶべきか

ここまで整理した内容をもとに、コスト観点での選択の考え方をまとめます。

条件 推奨出力先
1レコード 1KB程度 S3(コストと設定の手間のバランスが取りやすい)
1レコード 1.5KB程度以上 Kinesis Data Firehose(コスト優先)
インシデント調査をリアルタイムで行う CloudWatch Logs

1レコードあたりの容量は環境によって異なります。Bot ControlなどのマネージドルールグループやHTTPヘッダーの数によって変動するため、実際の環境での計測を行ってその記録をもとにログの配信先を選定していただければと思います。

まとめ

正直なところ調査を始める前はFirehoseの単価が圧倒的に安いことを知っていたので、コスト観点を考慮するならばFirehose一択なのかなと思っておりました。

ありがたいことに2025年の9月のアップデートによって無料枠が追加されたことで、CloudWatchとS3を出力先に設定する際の実際の単価が下がったことでFirehoseとの差が大きく縮まっていました。
ただ1レコードの容量が大きいケースでは、まだまだFirehoseにコストメリットがありそうです。

1レコードが大きい環境向けに、近いうちに実際にFirehoseを使ったWAFログの出力設定手順をご紹介できればと思っております。

今回の記事が参考になれば幸いです。
以上、クラウド事業本部の木村がお届けしました。

参考

https://docs.aws.amazon.com/waf/latest/developerguide/logging-kinesis.html
https://aws.amazon.com/jp/cloudwatch/pricing/
https://aws.amazon.com/jp/firehose/pricing/

この記事をシェアする

FacebookHatena blogX

関連記事