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

 更新 2026-09-14

コストの異変に気づくのが月末の請求書では遅い。Cost Explorer・Lambda・EventBridge Schedulerを組み合わせ、毎朝のコストをSlackへ通知する構成を解説する。通知文面や月次スレッド集約といった「読まれる通知」の設計まで固定化し、設定数個で導入できる形に整理した。

構成パターン監視・通知コスト

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

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

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

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

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

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

EventBridge Schedulerが毎朝の定時にLambdaを起動し、LambdaがCost Explorer APIで集計した結果をSNSトピックへ送り、Amazon Q Developer(旧 AWS Chatbot)を経由してSlackチャンネルへ届ける構成図
構成要素
役割
設計上のポイント
EventBridge Scheduler
定時起動
cron式 + タイムゾーン指定(JSTの「毎朝9時半」をUTC換算せず書ける)
Lambda
Cost Explorer APIで前日分を集計
前日実績に加え、当月累計と月末着地予測も取得
SNS + Amazon Q Developer(旧 AWS Chatbot)
Slackへの配送
通知基盤は既存のものに相乗りし、このモジュールでは作らない

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

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

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

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

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

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

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

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

5. まとめ

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

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