📈

AWSコスト監視くん - AWSのコストをSlackに通知するTerraformモジュール

に公開

はじめに

このモジュールを作成するきっかけとなったのは、「AWS Step Functions(JSONata)でAWS料金をSlackへ通知【Lambda無し】」という記事でした。この記事を読んで、Lambdaを使用せずにAWSのコストを監視できる仕組みに感銘を受けたスタッフが「これを導入したい!」ということで、これをTerraformモジュールとして再利用可能な形にさせて頂きました。

https://dev.classmethod.jp/articles/aws-cost-watcher-with-sfn-jsonata/

背景

AWSの利用コストを監視することは、クラウド運用において重要な課題の一つです。特に、予期せぬコストの増加や、特定のサービスの利用状況を把握することは、コスト最適化の第一歩となります。しかし、AWSのコスト管理コンソールを毎日確認するのは手間がかかり、また、コストの急激な増加に気づくのが遅れる可能性があります。

概要

https://github.com/nix-tkobayashi/aws-cost-monitoring-slack-notification

「AWSコスト監視くん」は、以下の機能を提供します。

  • AWSのコストを定期的に自動確認
  • コストが設定した閾値を超えた場合、Slackに通知
  • コストの内訳をサービスごとに表示
  • カスタマイズ可能なスケジュール設定

このモジュールは、AWS Step Functions、SNS、Chatbot、EventBridge Schedulerを組み合わせて実装されています。Lambdaを使用せずに実装されているため、運用コストを抑えることができます。

使い方

  1. モジュールを呼び出す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"
    }
    
  2. 必要な変数を設定します。

    変数名 説明 デフォルト値
    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
  3. Terraformを実行してデプロイします。

    ※詳しくはリポジトリの README をご覧ください。

終わりに

「AWSコスト監視くん」は、AWSのコスト管理を自動化し、コストの急激な増加を早期に検知することを可能にします。このモジュールを使用することで、コスト管理の効率化と、予期せぬコストの増加を防ぐことができます。

一言

AWSのコスト管理は、クラウド運用において重要な要素です。「AWSコスト監視くん」を使用して、効率的なコスト管理を実現しましょう。

この記事良かったと少しでも思って頂けたら是非 @___nix___ をフォローしてあげてください。或いは記事に対してリアクションをお願い致します。

謝辞

この記事は、以下を参考にインスパイアされました。

この記事の著者である川原@Classmethod様に感謝申し上げます。

Discussion