こんにちは、インフラエンジニアの綿引です。

従量課金が多い AWS ではコストを常にチェックしておきたいですよね。
そこで今回は AWS Budgets を使って、一定の料金を越えたら Slack に通知をさせる、ということをやってみたいと思います。

対象の方は以下のような方でしょうか。

  • AWS のコストは監視しておきたいが毎回見るのは面倒
  • コストアラートを Slack に通知させたい

AWS Budgets とは

AWS Budgets はコストまたは使用量が予算額や予算量を超えたときにアラートを発信できるサービスです。

また他にも以下のような機能もあります。

  • 現時点で予想請求額(使用量)から月末に発生する課金額を予測できる
  • RI(リザーブドインスタンス)の使用状況などをモニタリングする

詳細は以下のリンク先をご参照ください。

参考 : AWS Budgets を使用したコストの管理

実装

では早速実装していきます。使用するサービスは以下です。

  • Amazon SNS
  • Slack
  • AWS Chatbot
  • AWS Budgets

Amazon SNS

まずは SNS トピックを作成してします。
設定はデフォルトで作成し、トピック名は 「CostAlert_Test」 にしました。

作成が完了したら、 ARN をメモしておきます。

次に 「編集」 を選択し、アクセスポリシーを変更していきます。

アクセスポリシーの JSON エディタより以下を追加します。
追加する場所は “Statement” の下の行です。

{
    "Sid": "AWSBudgets-notification-1",
    "Effect": "Allow",
    "Principal": {
        "Service": "budgets.amazonaws.com"
    },
    "Action": "SNS:Publish",
    "Resource": "Insert-ARN-here"               ←  ここに先ほどメモした SNS の ARN を記載
},

“Insert-ARN-here” は先ほどメモした ARN に変更します。
これで SNS の設定は完了です。

Slack

次は Slack です。

コストアラート通知用に channel を作っておきましょう。
今回は 「alert-cost_alert」 という channel 名にしました。

AWS Chatbot

次は AWS Chatbot の設定を行なっていきます。

余談ですが、Chatbot はついに beta 版がなくなって一般提供が開始されましたね。
前から使っていたので嬉しい限りです。

Chatbot ではまず 「クライアントの設定」 から、通知を行いたい Slack ワークスペースと Chatbot を連携させます。

次に 「新しいチャネルを設定」 を選択し、先ほど作成した SNS トピックなどを登録していきます。

設定名や付与する IAM ロールの設定などは任意です。

「Slack チャネル」には先ほど作成した channel を設定します。

「SNS トピック」も同様に、先ほど作成した SNS トピックを設定します。

設定が完了したら保存します。

これで Chatbot の設定も完了しました。

AWS Budgets

最後に Budgets の設定です。

AWS Budgets の画面を開き、 「予算を作成する」 を選択します。

「予算タイプの選択」 では 4つの選択肢から選ぶことができますが、今回は一定の料金を越えたら Slack に通知をさせる、ということをやりたいので 「コスト予算」 を選択します。

次の 「予算の設定」 では、予算に関する詳細の設定を入れていきます。
名前、間隔(月、四半期など)、予算額などを任意で入力します。

最後に 「アラートの設定」 です。

「アラートのしきい値」 には、先ほど入力した予算額の何%でアラートを通知させたいかを入力し、 「Amazon Simple Notification Service (SNS) トピックを通じて通知」にチェックをつけて、先ほど作成した SNS トピックの ARN を入力します。

これで Slack への通知設定ができたので、他の設定が終わったら 「完了」 を押下します。

これで AWS Budgets の設定も完了しました。

この段階で設定した閾値を越えていたら、Slack に以下のような通知が届きます。

最後に

今回はAWS Budgets のコストアラートを Slack に通知してみましたが、非常に簡単にできました。
モニタリングしておかなければならないコストを、Chat に流すことで楽に見れるようになったのは嬉しいです。

尚、今回は Slack にのみ通知する設定を入れましたが、SNS 側でサブスクリプションの設定を追加すれば、メールなどにも同時に通知が可能ですのでご興味あればお試しください。

エンジニア募集中

Wedding Parkでは一緒に技術のウエディングパークを創っていくエンジニアを募集しています。
興味のある方はぜひ一度気軽にオフィスに遊びにいらして頂ければと思います。
株式会社ウエディングパークwantedly

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る