AWSコスト監視くん - AWSのコストをSlackに通知するTerraformモジュール
はじめに
このモジュールを作成するきっかけとなったのは、「AWS Step Functions(JSONata)でAWS料金をSlackへ通知【Lambda無し】」という記事でした。この記事を読んで、Lambdaを使用せずにAWSのコストを監視できる仕組みに感銘を受けたスタッフが「これを導入したい!」ということで、これをTerraformモジュールとして再利用可能な形にさせて頂きました。
背景
AWSの利用コストを監視することは、クラウド運用において重要な課題の一つです。特に、予期せぬコストの増加や、特定のサービスの利用状況を把握することは、コスト最適化の第一歩となります。しかし、AWSのコスト管理コンソールを毎日確認するのは手間がかかり、また、コストの急激な増加に気づくのが遅れる可能性があります。
概要
「AWSコスト監視くん」は、以下の機能を提供します。
- AWSのコストを定期的に自動確認
- コストが設定した閾値を超えた場合、Slackに通知
- コストの内訳をサービスごとに表示
- カスタマイズ可能なスケジュール設定
このモジュールは、AWS Step Functions、SNS、Chatbot、EventBridge Schedulerを組み合わせて実装されています。Lambdaを使用せずに実装されているため、運用コストを抑えることができます。
使い方
-
モジュールを呼び出すTerraformコードを作成します。
module "cost_watcher" { source = "../../modules/cost-watcher" project = "my-project" slack_channel_id = "C0123456789" slack_workspace_id = "T0123456789" cost_lookback_days = 7 angry_threshold = 100 batch_schedule = "cron(0 9 ? * MON-FRI *)" batch_timezone = "Asia/Tokyo" }
-
必要な変数を設定します。
変数名 説明 デフォルト値 project プロジェクト名 - slack_channel_id SlackチャンネルID - slack_workspace_id SlackワークスペースID - cost_lookback_days コストを確認する日数 7 angry_threshold コスト監視くんが怒る閾値(USD) 100 batch_schedule コスト確認のスケジュール(cron形式) cron(0 9 ? * MON-FRI *) batch_timezone スケジュールのタイムゾーン Asia/Tokyo -
Terraformを実行してデプロイします。
※詳しくはリポジトリの README をご覧ください。
終わりに
「AWSコスト監視くん」は、AWSのコスト管理を自動化し、コストの急激な増加を早期に検知することを可能にします。このモジュールを使用することで、コスト管理の効率化と、予期せぬコストの増加を防ぐことができます。
一言
AWSのコスト管理は、クラウド運用において重要な要素です。「AWSコスト監視くん」を使用して、効率的なコスト管理を実現しましょう。
この記事良かったと少しでも思って頂けたら是非 @___nix___ をフォローしてあげてください。或いは記事に対してリアクションをお願い致します。
謝辞
この記事は、以下を参考にインスパイアされました。
この記事の著者である川原@Classmethod様に感謝申し上げます。
Discussion