AWSの請求レポートを毎日Slackに通知
はじめに
個人で AWS を利用していて
- 毎日どれくらいのコストがかかっているのか把握したい
- コストが多くかかっているリソースに早く気付きたい
- コストに意識を向けたい
といったモチベーションが生まれたため AWS の請求レポートを毎日 Slack に通知する Lambda 関数を開発しました。
GiHub に リポジトリ を公開しておりますので参考にしていただけましたら幸いです。
前提
- Slack のワークスペース、レポート用のチャンネルは用意済みの想定で書いております。
- Serverless Framework の CLIをインストール済みの想定で書いております。
- Node.js のバージョンは
12.xを利用しております。
Slack Webhook URL の生成
Slack へのメッセージ送信に Incoming Webhook を利用します。
はじめに Webhook の URL を生成します。
https://${workspaceId}.slack.com/apps/A0F7XDUAZ--incoming-webhook- にアクセスし、「Slackに追加」をクリックする。

「チャンネルを選択」をクリックするとプルダウンが表示されるので選択する。
「Incoming Webhook インテグレーションの追加」がアクティブになるのでクリックする。


Webhook URL が生成されるのでコピーしておく。

Lambda 関数を実装
詳細なコードに関しては GitHubの リポジトリ を参照していただき要点のみまとめさせていただきます。
Webhook URL を設定する。
$ cp ./env.example.yml ./env.yml で .env.yml ファイルを作成します。
先ほどコピーした Webhook URL を .env.yml の SLACK_WEBHOOK_URL に設定します。
必ず us-east-1 リージョンを利用する。
日本で基本的に利用するリージョンは ap-northeast-1 ですが、
今回コストの使用状況の確認に利用する AWS Cost Explorer が us-east-1 リージョンのみの対応のため、必ず us-east-1 リージョンを利用してください。
日付は XXXX-XX-XX の形式にする。
2021/01/01 や 2021-1-1 などではエラーになります。
Slack へのメッセージの確認
$ yarn build で Lambda 関数をビルドします。
デプロイする前に $ sls invoke local -f create でローカルのコードをテストします。
Slack にメッセージが届けば、 $ sls deploy でデプロイを実行します。

Slackへのメッセージサンプル
おわりに
メッセージをカスタマイズする場合は、 AWS Cost Explorer のドキュメント を参照してください。
最後までお読みいただきありがとうございます。
記事に対するリアクションや情報の誤り、誤字脱字などございましたらコメントや記事を管理しているリポジトリまでお願いいたします。
参考にさせていただいたページ
- https://qiita.com/narikei/items/3f772c12591afdc5262d
- https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-での-Incoming-Webhook-の利用
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CostExplorer.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CostExplorer.html#getCostAndUsage-property
Discussion