こんにちは、ABEJAの村主です。ABEJAアドベントカレンダー2023の18日目の記事です。今回は、意外にも高額になりがちなAWS Configのコスト削減について、どのように対応したかをご紹介します。特に、AWS Configのコストを大幅に減らすためのアプローチについてお話しします。また、CloudWatch で AWS Config のカウント量を可視化する方法はあまり見かけなかったのでブログにしておきました。
最初に気づいたのは、AWS Cost Explorer を確認していたときです。そこで見たAWS Configのコストは、1日あたり約$15、月間では約$450でした。これはなかなかの負担であり、どのリソースがコスト増加の原因であるか、またそれを除外するべきかを考慮する必要があると感じました。
かつては Athena を使ってログからデータを取得していましたが、現在では CloudWatch で AWS Config のカウント数を監視できるようになりました。これにより、 CloudWatch Dashboard を作成して、問題の原因を簡単に特定することが可能になりました。特に今回のケースは、「AWS::AutoScaling::AutoScalingGroup」がコストの大部分を占めていることが判明しました。 以下の ConfigurationItemsRecorded でリソース別に見てけば上記のような値が取れます。 上記画像の例で行けば、「AWS::AutoScaling::AutoScalingGroup」が72%近く占めており圧倒的ですね。
コストがかかっているリソースを特定した後、 AWS Config でそれらを「記録から除外」する設定を行いました。これにより、不要なリソースの監視を止めることができ、結果としてコストを大幅に削減することができました。 ただし、当たり前ですが除外するとそのリソースに関する変更履歴は今後記録、検知されないことに注意してください。記録とコストのバランスを見て除外の判断をしましょう。 この取り組みの結果、AWS Configのコストは1日あたり約$1にまで減少しました。(時折高い時があるのは色々検証した結果なので、作業前の平均を見てください)
原因を分析したところ、私たちのシステムでは常に数百台のEC2が稼働しており、ほぼ全てでEKSを使用していました。これにより、AutoScaling が頻繁に行われており、またスポットインスタンスの頻繁な起動・停止や、EC2ボリューム(SSD)やネットワークインターフェイスの作成などが頻発していました。これらがコスト高の原因でした。ただ、それにしても高い感はあるので、AWSを使い込んでいく上でAWS Config はそこまで安くないのだなと思いました。 他の企業も同様の問題に直面しているかもしれませんので、この記事が何らかの参考になれば幸いです。
切っ掛けと問題の認識
AWS Config のカウント数の監視
対象外にしたいリソースが見つかったら AWS Config 側で除外する
実際のコスト削減効果
なぜもともとコストが高かったのか
まとめ