はじめに
おはようございます。IWS です。
先日 AWS のコストを眺めていた際、異様に CloudWatch のコストが高くなっていることに気づきました。さすがに少しは減らさないといけないと思い設定を見直し、結果 USD 500 ほど削減することができたのでその時のことを書き残そうと思います。
ちなみにこうなりました
7月:USD 906.26 → 9月:USD 156.19

CloudWatch が USD 750 減っています。(※うち USD 250 はログのインサイトの使用料のため、実際に削減した額は USD 500 ほどです)
そもそも何でお金がかかってるのか

Billing and Cost Management の請求書から CloudWatch の項目を確認してみると、どうやら $0.50 per GB of vended logs ingested in Standard log class for the first 10TB - US East (Northern Virginia) という項目で USD 533.84 ほどかかっているようです。
この項目は、標準クラスでのログ取り込みにかかっているコストの項目です。1,067.672 GB 取り込んでおりこれだけのコストになっているようです。
調べるとどうやらここには WAF のログが大量に吐き出されているようでした。1ヶ月で約 1TB なのでそこそこの量ですね。
この項目を減らすことができれば Cloudwatch のコストを大きく下げることができそうです。
コストを抑える手段
このコストを抑える手段としては
- ロググループを標準クラスから低頻度アクセスクラスやあるいは S3 に変更する
- 取り込むログの量自体を減らす
の2通りがあると思います。
前者は 1GB あたりのログの取り込みなどにかかるコスト自体を抑える方法、後者はログ自体を減らすことでコストを抑える方法です。
ロググループを低頻度アクセスクラスや S3 に変更する
S3 のストレージクラスのように何種類もあるわけではなく「標準」と「低頻度アクセス」の2種類だけですが、 CloudWatch Logs のロググループにも実はクラスがあります。
たとえば、低頻度アクセスでは、一部機能を使うことができない代わりにログの取り込みにかかるコストを標準の半分に抑えることができます。
代わりに、使用できなくなる機能としてサブスクリプションフィルターやメトリクスフィルターなどがありますが、検索程度であればログのインサイトで行うことができるため、必要なときにとりあえずログの調査ができればいいというような場合は低頻度アクセスにしてしまうことでコストを抑えることができます。
アクセス頻度の低いログ用の新しい Amazon CloudWatch ログクラスを割引価格で提供
Vended Logs 最初の 10 TB/月 の料金
| 東京 | バージニア北部 | |
| 標準 | USD 0.76/GB | USD 0.50/GB |
| 低頻度アクセス | USD 0.38/GB | USD 0.25/GB |
| S3 標準 | USD 0.38/GB | USD 0.25/GB |
今までは WAF のログを CloudWatch Logs の標準クラスに吐き出していました。これを低頻度アクセスへと変更することでコスト削減をします。
今回は、ロググループを引き続き使用しますが、S3 に保存しておきクラスを適切に変えることでより多く削減できると思います。
ロググループのクラスは、作成後に標準から低頻度アクセスに変更する事はできず新規でロググループを作成する必要がある点はご注意ください。
新規で低頻度アクセスクラスのロググループを作成し、WAF の Logging destination を変更すればOKです。ロググループの名前の先頭に aws-waf-logs- とつけるのを忘れずに。

取り込むログの量自体を減らす
送られるログ自体を減らすことでコストを減らします。今回は WAF のログが原因なので、WAF から送られるログを減らすことができれば解決です。
WAF にはログのフィルター機能がありどの種類のログを残すか落とすかを設定することができます。
Filter logs から設定ができます。今回はおそらくログの大半を占めているであろう ALLOW のログを出さないように設定を変えてみました。

この設定をしてからはログの取り込み量が 7月:1,067.672 GB → 9月:1.071 GB にまで減りました。
低頻度クラスへの変更も含めて金額にすると USD 533.57 の削減です。

↓

最後に
CloudWatch Logs と WAF を設定を少しだけいじり USD 500 の削減をしてみました!
ロググループを低頻度クラスに変更するだけでも取り込みコストを半分にすることができます。ぜひ皆さんのアカウントでも設定を確認して削減できる箇所がないか探してみてください!


