← グループ一覧へ戻る
技術解説

AWSコストを毎朝Slackで受け取る ─ 通知設計まで固定化した日次コスト通知

  • AWS
  • Cost Explorer
  • Lambda
  • Slack
  • コスト管理

AWSのコスト異常は、気づくのが遅いほど高くつく。消し忘れたリソース、想定外のデータ転送、暴走したクエリ—— 月末の請求書で気づいた時には、30日分が積み上がっている。 本稿では、毎朝のコストをSlackに流す小さな仕組みと、それを「読まれ続ける通知」にするための設計を解説する。

ページ構成

  1. 課題: 請求書は遅すぎ、Cost Explorerは開かれない
  2. 構成: Scheduler → Lambda → SNS → Slack
  3. 「読まれる通知」の設計
  4. 責務分離: モジュールが作るもの、呼び出し側が渡すもの
  5. まとめ

1. 課題: 請求書は遅すぎ、Cost Explorerは開かれない

コスト管理の道具は揃っている。Cost Explorerを開けばいつでも見られるし、AWS Budgetsで閾値アラートも張れる。 それでも異変に気づけないのは、人間が毎日ダッシュボードを開き続けることはないからである。

手段弱点
月末の請求書気づいた時には1ヶ月分
Cost Explorer見に行く習慣が続かない
Budgetsの閾値アラート閾値を超えるまで沈黙する。緩やかな増加に気づけない

必要なのは「異常時だけ知らせる」ではなく、正常時も含めて毎日目に入ること。 毎朝同じ時刻に金額が流れてくれば、「昨日はいつもより高い」という違和感を人間の側で検出できる。

2. 構成: Scheduler → Lambda → SNS → Slack

構成要素役割設計上のポイント
EventBridge Scheduler定時起動cron式 + タイムゾーン指定(JSTの「毎朝9時半」をUTC換算せず書ける)
LambdaCost Explorer APIで前日分を集計前日実績に加え、当月累計と月末着地予測も取得
SNS + ChatbotSlackへの配送通知基盤は既存のものに相乗りし、このモジュールでは作らない

Cost Explorer APIの呼び出しには少額の課金があるが、1日1回の集計であれば月数十円のオーダーに収まる。 「コストを監視する仕組みのコスト」が問題にならない規模に設計しておくことも、この種の仕組みでは重要である。

3. 「読まれる通知」の設計

この仕組みの本体は、実はアーキテクチャよりも通知設計にある。 毎日流れる通知は、設計を誤ると数週間でミュートされる。

設計理由
月単位でスレッドに集約する毎日新規メッセージを流すとチャンネルが埋まり、ミュートされる。スレッドIDを「年月」から生成し、同月の通知を1スレッドにまとめる
親メッセージのサマリを毎日更新するスレッドを開かなくても「最新日付と当月合計」がチャンネル一覧から見える
金額 + 前日比 + 月末予測を1行目に置くスクロールせず判断できる。詳細(サービス別内訳)はその下
文面は運用者の言語で固定通知文はモジュール側で日本語文面として固定化。呼び出し側がテンプレートを設計する余地をあえて残さない

最後の項目は割り切った設計である。通知文面をカスタマイズ可能にすると、導入時の設定項目が増え、 チームごとに文面がばらつき、結局「どう書くのが正解か」の設計コストが利用者側に発生する。 文面設計まで含めてモジュールの責務とし、呼び出し側は宛先とスケジュールだけを渡せばよい形にした。

4. 責務分離: モジュールが作るもの、呼び出し側が渡すもの

内容
モジュールが作るものLambda関数、実行スケジュール、必要最小限のインラインポリシー(Cost Explorer読み取り + SNS Publish)
呼び出し側が渡すもの通知先SNS Topic、実行ロール、ロググループ、cron式とタイムゾーン、通貨、予測の要否

IAMロールとロググループを呼び出し側管理にしているのは、当モジュール群全体の設計方針 (IAMとSecurity Group ─ 2つのアクセス制御レイヤーの設計参照)に合わせたもの。 ロールの一覧性を保ちながら、このモジュールは「自分が必要とする権限だけ」をインラインポリシーで追加する。

5. まとめ

設計判断内容
異常検知ではなく定点観測毎朝同じ時刻に流し、人間の違和感を検出器にする
通知設計こそ本体月次スレッド集約・サマリ更新・文面固定で「ミュートされない通知」を作る
文面はモジュールの責務カスタマイズ性より導入の軽さ。設定は宛先とスケジュール程度
監視の仕組み自体を安く1日1回のAPI呼び出しに抑え、監視コストを無視できる規模に

コスト管理は「見える化」まで作って止まりがちだが、見える場所を作っても人は見に行かない。 情報の方から毎日届く構造にすることが、実際に機能するコスト管理の最短経路である。