1. はじめに
Amazon CloudWatch Logs は、マネージドサービスでサーバーの構築やストレージの空き容量を気にせず運用することができる点で大きなメリットがあります。
ただ、便利な Amazon CloudWatch Logs ですが、ログデータが増えるにつれて、Amazon CloudWatch Logs へのログの取り込みやストレージ料金が高額になる恐れがあります。
一定期間経過したログは、Amazon CloudWatch Logs から削除し、別のコストパフォーマンスの良いストレージに移行することでログ保管にかかるコストを減らす方法についてまとめました。
2. 本記事の目的
- Amazon CloudWatch Logs と Amazon S3 の料金特性を理解する。
- 安全かつ自動的にコストを抑えるための具体的な対策を知る。
3. Amazon CloudWatch Logs の料金は案外高い(課題)
Amazon CloudWatch Logs は、ログの収集からリアルタイムの監視までをシームレスに行うことができる非常に便利な機能です。
しかしながら、前述したとおり、Amazon CloudWatch Logs にログを蓄え始めて、半年、一年と時間が経つうちに Amazon CloudWatch Logs の料金が高額になっていることがあります。
ここで Amazon CloudWatch Logs の料金体系を確認してみます。
※ ここではログの取り込みとストア料金のみ
3.1. 無料利用枠
| カテゴリ | コスト |
|---|---|
| データ取り込み | 5GB/月 |
| ストア | 5GB/月 |
※ 2026年5月23日現在
3.2. 有料利用枠
| カテゴリ | コスト |
|---|---|
| データ取り込み | 1GBあたり月額0.76米ドル |
| ストア | 圧縮時1GBあたり0.033米ドル |
※ Amazon CloudWatch Logs では、データ取り込み時はログデータは圧縮されてませんが、保存される際にログデータを圧縮する。
※ 2026年5月23日現在
3.3. 料金比較:Amazon CloudWatch Logs vs Amazon S3
Amazon CloudWatch Logs と Amazon S3(Standard)に データ保管(10GB)した場合の料金比較です。
※ 1米ドル=155円、圧縮率を一般的な0.15(約7分の1)として計算しています。
| 項目 | Amazon CloudWatch Logs(標準) | Amazon S3(Standard) |
|---|---|---|
| データ取り込み / API | $7.60 (約1,178円) ※10GB(非圧縮)× $0.76 |
$0.0000047 (約0.0007円) ※10GBのエクスポートでPUTが1回発生と仮定 |
| データ保管(月額) | $0.049 (約8円) ※1.5GB(圧縮後)× $0.033 |
$0.0375 (約6円) ※1.5GB(圧縮エクスポート)× $0.025 |
| 初月の合計コスト | $7.649 (約1,186円) | $0.0375 (約6円) |
※ 2026年5月23日現在
4. 活用と保管を分ける(対策)
3.3. 料金比較:Amazon CloudWatch Logs vs Amazon S3 で示したとおり、Amazon CloudWatch Logs と S3 へ 10 GB のログを保存した場合では、コストが 1000円以上もかかることがわかりました。
Amazon CloudWatch Logs に ログを保管しておくとログの監視やログをクエリするなどの機能があるため、便利ですがコストが嵩んでしまいます。
ログは、システムの障害対応や障害が起こった時間に生じた出来事を調べるためには有用な情報です。
こういった特性のあるログは時間が経つにつれて、利用される頻度が下がってきます。
そのため、直近の活用する可能性のあるログは Amazon CloudWatch Logs に保管しておき、保存されてから一定期間経過したログに関しては、S3に移行することをおすすめします。
4.1. Amazon CloudWatch Logs の保持期間(ログの有効期限)を設定する
Amazon CloudWatch Logs のデフォルト設定では、ログの保持期間が「無期限」となっています。
この状態のまま運用を続けると、システムが稼働している限りログデータは溜まり続け、コストも右肩上がりに膨れ上がってしまいます。
コストを最適化するためには、ログの用途に合わせて適切な保持期間(有効期限)を明示的に設定することが不可欠です。
システムの特性にもよりますが、一般的なWebアプリケーションであれば、保持期間は14日間 〜 30日間程度で設定するのがよいと考えています。
エンジニアがアプリケーションのログを詳細に調べるのは、基本的には「障害が発生した直後」や「直近の不具合の挙動を確認したいとき」です。
運用上、3ヶ月前のログを CloudWatch Logs Insights で検索するようなシーンはそう多くありません。
4.2. 保管が必要なログは Amazon S3 へエクスポートする
鮮度が落ちたログデータは、Amazon CloudWatch Logs に保管しておくと、活用シーンが少ない割にコストパフォーマンスが悪くなってしまいます。
そういった鮮度が落ちたログデータは、CloudWatch Logs から削除される前に Amazon S3 へエクスポートして退避させるのが良いでしょう。
4.2.1. Kinesis Data Firehose による転送
CloudWatch Logs の「サブスクリプションフィルター」を活用し、出力されたログをリアルタイムで Amazon Kinesis Data Firehose(以下、Firehose)経由で S3 へ流し込む方法です。
-
メリット:
- ログが発生したほぼ同時に S3 へ保管されるため、確実なバックアップが可能です。ロググループの数が増えても一元管理がしやすくなります。
-
デメリット
- Firehose のデータ処理量に応じた利用料金がわずかに上乗せされます。
- 出力されたログをリアルタイムで Firehose でS3に流し込みますが、一定期間は、Amazon CloudWatch Logs と 二重保管になります。ただ、Amazon S3 の料金は高くないので、ほとんどの場合許容範囲内だと思われます。
5. まとめ(結論)
本記事では、Amazon CloudWatch Logs のコストの仕組みと、Amazon S3 を組み合わせたログのコスト戦略について解説しました。
ポイントをまとめると以下の通りです。
- Amazon CloudWatch Logs は「取り込み時」が一番高い:生データの状態で 1GB あたり $0.76 の課金が発生するため、大量のログをそのまま溜め込むのは厳禁。
- デフォルトの「無期限」は見直す:直近のトラブルシューティングに必要な 14日〜30日間 だけを CloudWatch Logs に残す設定にする。
- 古いログは S3 へ逃がす:鮮度が落ちた過去のログは、単価が安く、かつ圧縮状態のまま保管できる Amazon S3 へエクスポートしてコストを抑える。