CloudWatch Logs と S3 にかかる料金比較

料金と運用保守の観点両方を加味し、費用対効果の高い方法を選択しましょう。
2024.05.26

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

私は CloudWatch Logs というサービスが便利で好きなのですが、一般的に「S3 と比べてコストがかかる」という印象を持たれている方が多いと感じています。

  • 何にどれくらいコストがかかっているのか
  • どんな時に CloudWatch Logs への保存を考えたらいいのか
  • コスト削減するにはどのようなアーキテクチャにしたらいいのか

等を調査しまとめました。

料金簡易比較表

※ 2024/5/25 時点の東京リージョンでの料金で、$1 = 156円換算
※ どちらも保存クラスがスタンダードの場合
※ S3 の書き込み料金はリクエスト回数によって計算されるため、下記表では 1 GB のファイルを 1 回でアップロードすることを想定して計算している

CloudWatch Logs S3 Standard
書き込み(取り込み)料金 $0.76/GB(≒ 118円) $0.0047(≒ 0.7円)
月額保存料金 $0.033/GB(≒ 5円) $0.025/GB(≒ 3.9円)
  • 表で比較すると CloudWatch Logs へのデータ書き込み(取り込み)料金が高価
  • 保存料金は日本円にして 1GB 1 円程度の差で、そこまで大きくはない
    • 100GB データがあれば月額 100 円程度の差
    • CloudWatch Logs に保存されるデータは元のデータの 15% 程度まで自動圧縮されるため、保存料金だけ見たら CloudWatch Logs と S3 で大差ないことが分かる

CloudWatch Logs の料金

※2024/5/25 時点の東京リージョンでの料金です。

ログの管理 費用 $1 = 156円換算
(小数点以下切り捨て)
データ書き込み(Data Ingestion)‎‎スタンダード $0.76/GB 118円
データ書き込み(Data Ingestion)‎‎低頻度アクセス $0.38/GB 59円
月額保存 (アーカイブ) $0.033/GB 5円

無期限無料利用枠が利用できる場合、5 GB までのデータ書き込み(取り込み)、保存 (アーカイブ)、Logs Insights クエリによってスキャンされたデータは無料になります。
リセラー経由で AWS アカウントを利用されている方はこの無料利用枠が利用できない場合がありますので、ご利用のリセラーにご確認ください。

「保存」に「(アーカイブ)」とカッコ書きで追記されているのは、CloudWatch Logs に取り込まれたログは AWS によって自動で元のデータの 15% 程度まで圧縮されるためです。圧縮後のデータ量で計算した料金を記載しているわけです。
詳細は以下ブログを参照ください。

圧縮を加味して生データ量で S3 と保存料金だけを比較すると、本当にあまり変わらないと言えるのではないでしょうか。

CloudWatch Logs のその他の機能でかかる料金

※2024/5/25 時点の東京リージョンでの料金です。

ログの管理 費用 $1 = 156円換算
(小数点以下切り捨て)
分析 (Logs Insights のクエリ) スキャンしたデータ 1 GB あたり $0.0076 1円
検出およびマスク (データ保護) スキャンされたデータ 1 GB あたり $0.12 18円
分析 (Live Tail) 0.01 USD/分 1円

S3 Standard(標準)クラスの料金

※2024/5/25 時点の東京リージョンでの料金です。

ストレージ料金(保存料金)

S3 Standard に保存するデータ量 月額保存料金 $1 = 156円換算
(小数点 2 位以下切り捨て)
最初の 50 TB/月 $0.025/GB 3.9円
次の 450 TB/月 $0.024/GB 3.7円
500 TB/月以上 $0.023/GB 3.5円

データ書き込み料金(PUT リクエスト)

S3 Standard に 1,000 リクエストあたり $1 = 156円換算
(小数点 2 位以下切り捨て)
PUT、COPY、POST、LIST リクエスト $0.0047 0.7円

マルチパートアップロードについて

S3 の場合、書き込み料金(PUT リクエスト)はデータ量ではなくリクエスト数換算ですが、一度に PUT で書き込めるデータ量の上限は 5GB です。
それより大きなサイズのデータを書き込む場合はデータを分割してアップロードしたり、 マルチパートアップロード を利用したりするなどの方法を取ります。

Q: Amazon S3 にはどれだけのデータを保存できますか?

Amazon S3 に格納可能なデータの総量とオブジェクトの数には制限はありません。個別の Amazon S3 オブジェクトのサイズは、最低 0 バイトから最大 5 TB までさまざまです。1 つの PUT にアップロード可能なオブジェクトの最大サイズは 5 GB です。100 MB を超えるオブジェクトの場合は、マルチパートアップロード機能を使うことをお考えください。
よくある質問 - Amazon S3 |AWS

5GB 以上のファイルのアップロードだけでなく、分割した複数ファイルを並行してアップロードするためスループット向上のメリットもあります。

S3 へ移行するとコスト削減になるのか?

CloudWatch Logs の料金でコストがかかるのは書き込み(取り込み)料金であることが分かりました。

つまり、CloudWatch Logs のログ保存期間を短くして保存量を抑えるだけでは、そこまで大きなコスト削減効果には至りません。
もちろん無期限で CloudWatch Logs のログを保存しているとどんどん保存料金が上がっていくので、保存期間は設定してください。

また、「CloudWatch Logs はコストがかかるから S3 にログを移行しよう!」と Data Firehose などで安易に流そうとすると、結局 CloudWatch Logs に取り込む時点でコストが発生してしまいます。
Data Firehose の料金も加算されるため、これだと逆に料金が高くなってしまいます。

ですので、コスト削減効果を期待する場合は、CloudWatch Logs を経由せずにログデータの書き込み先を直接 S3 にするようなアーキテクチャを考える必要があります。

ちなみに CloudWatch Logs から S3 へのデータエクスポートは CloudWatch Logs ロググループのコンソール画面から簡単にできます。

ユースケース

CloudWatch Logs が適しているケース

  • ログデータの保存量が 5GB 以下、もしくはそこまで多くないことが想定できる場合
  • リアルタイムでのログ監視が求められる
  • まずは色々と出力して中身を見たい
  • 緊急時に迅速なログ確認が求められる

というような場合は圧倒的に CloudWatch Logs をお勧めしたいです。

CloudWatch Logs Insights というクエリのサービスがとても使い勝手がよく好きでお勧めです。
いざというときにスピード感をもって簡単にログを確認することができるのは CloudWatch Logs です。

S3 への直接保存が適しているケース

  • 大規模データのアーカイブ
  • データレイクの構築
  • 他のサービスとのデータ共有
  • バックアップ
  • コスト削減が最優先事項である

コストに関していうと、CloudWatch Logs を介さず、EventBridge Scheduler や Lambda などを用いて定期的にログを S3 に格納するバッチのような仕組みを作ることも可能です。

[RDS] Oracle Database の監査ログを定期的にS3に保存する | DevelopersIO

作りこみによる管理の複雑さや人的コスト、引継ぎコストなども加味してください。複数の有識者が Lambda 関数を組める状況であれば有効な手段です。

普段全く閲覧しないが法律によって長期保存が義務となっているようなデータの場合は S3 バケットへの保存一択です。

終わりに

CloudWatch Logs と S3 にかかる料金を比較しまとめました。

「安い方」「使いやすい方」だけでなく、長期利用する場合の運用方法や利用頻度、現場で実際に操作する人がスキルを身に着ける時間の確保や学習コストなども加味し、費用対効果の高い方法を選択しましょう。

また、見積もりに関していうと、予想しきれないデータ量や利用頻度に対しクラウドのコストを数円単位でちくちく計算するのは大変です。
「すぐに試せる」というクラウドのアジリティを生かし、テスト環境で一度動かしてみると、検証も進みコスト感も分かるのでお勧めです。

参考