定期的にAWSのコストをSlackへ通知してくれる便利なやつ. デフォルトでは毎週月曜日の10時にこんな感じでコストを投稿してくれる.
Period: 2023-08-01 ~ 2023-08-29
+------------------------------------+----------+ | Service | Amount | +------------------------------------+----------+ | AWS Lambda | 0.00 USD | | EC2 - Other | 5.84 USD | | Amazon Relational Database Service | 0.05 USD | | Amazon Route 53 | 1.50 USD | | Amazon Simple Storage Service | 0.03 USD | | Amazon Virtual Private Cloud | 0.00 USD | | AmazonCloudWatch | 0.00 USD | | Tax | 0.74 USD | | ---------------------------------- | -------- | | Total | 8.15 USD | +------------------------------------+----------+
- Terraform CLIを使えるようにする
- AWSのCost Explorerを有効化
- 通知したいSlackチャンネルへのWebhook URLを作成
- 以下の環境変数をセット
- AWS_ACCESS_KEY_ID: アクセスキー
- AWS_SECRET_ACCESS_KEY: シークレットキー
- AWS_REGION: リージョン
- TF_VAR_SLACK_WEBHOOK_URL: 通知先のSlackチャンネルへのWebhook URL
そしたら
cd tf
terraform init
terraform apply -auto-approve
Terraform CLIのインストール.(Macの場合)
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
他のOSについては公式のページを参照.
AWSコンソールからコスト計算に使用するCost Explorerの有効化を行う(参考).
※ Cost Explorerのページから請求ダッシュボードなどが見える状態になっていれば大丈夫です.
また,Terraformで使用するIAMユーザの認証情報を以下の環境変数へ設定する.
- AWS_ACCESS_KEY_ID: アクセスキー
- AWS_SECRET_ACCESS_KEY: シークレットキー
- AWS_REGION: リージョン
IAMユーザには,IAMポリシー,IAMロール,Lambdaの作成に必要な権限が付与されている必要があります.
Slack botを作成し,通知したいチャンネルへのWebhook URLを生成する.
生成したURLを環境変数TF_VAR_SLACK_WEBHOOK_URL
へセットする.
(https://hooks.slack.com/services/XXXX/XXXX/XXXXXXX みたいな形式のURLです.)
cd tf
terraform init
terraform apply -auto-approve
- TF_VAR_SCHEDULE_EXPRESSION: 定期実行の間隔.cron形式で設定してください.(デフォルト:"cron(0 10 ? * MON *)")