kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

SlackでのAwsBillingの予算アラートの受信 を試してみた

f:id:kazu22002:20201116142426p:plain

docs.aws.amazon.com

awsの料金が気になり始めたので、通知をするようにしてみました。

awsの機能でまずできるところまでやってみます。

Aws Chatbotまでの設定

aws Chatbotを利用して通知を実現しているみたいです。chatbotがAmazon Snsを利用しているためAmazon Snsの設定から行なっていきます。

今回はslackへの通知を試しますが、slackはすでに使える状態を想定しています。

Amazon Snsのトピック作成。「Simple Notification Service」へ移動。

f:id:kazu22002:20201116132533p:plain

f:id:kazu22002:20201116132544p:plain

トピックの設定内容は「スタンダード」。chatbotの設定時かbillingの通知でエラーになるためスタンダードにします。名前はわかりやすい名前を指定します。

f:id:kazu22002:20201116132615p:plain

作成完了です。

f:id:kazu22002:20201116132730p:plain

次にAWS Chatbotを作成。AWS Chatbotのサービスへ移動。

f:id:kazu22002:20201116132800p:plain

送信するslackのスペースを入力。

f:id:kazu22002:20201116132940p:plain

chatbotの設定を入力。

f:id:kazu22002:20201116132954p:plain

f:id:kazu22002:20201116133025p:plain

f:id:kazu22002:20201116133036p:plain

通知は作成したSNSトピックを設定します。

f:id:kazu22002:20201116133047p:plain

chatbotまでの設定は完了です。

予算の通知設定

今回はIAMユーザーで設定していますが、請求情報が閲覧できる人なら設定可能だと思います。

通知先の設定周りがややこしかったので、細かく説明を書いてみます。

Billingの画面へ遷移。

f:id:kazu22002:20201116135258p:plain

Budgetsへ遷移。予算作成。

f:id:kazu22002:20201116135312p:plain

f:id:kazu22002:20201116135325p:plain

予算作成の設定内容

f:id:kazu22002:20201116135402p:plain

f:id:kazu22002:20201116135624p:plain

f:id:kazu22002:20201116135646p:plain

f:id:kazu22002:20201116135735p:plain

閾値の設定。

f:id:kazu22002:20201116135755p:plain

通知を設定。(※ここからちょっと面倒でした)

f:id:kazu22002:20201116135818p:plain

f:id:kazu22002:20201116135954p:plain

作成したトピックのアクセスポリシーを編集するためsns画面へ移動して編集画面へ遷移。

f:id:kazu22002:20201116141337p:plain

アクセスポリシーを開き、Statementの配列に追加をします。Resource部分は最初に設定されている__default_statement_ID側と同じ値を設定。

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "AWSBudgets-notification-1",
      "Effect": "Allow",
      "Principal": {
        "Service": "budgets.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:********:chatbot-billing"
    },
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },

~~~~~~~~

編集した内容を登録し、SNSのARNをコピー。

f:id:kazu22002:20201116141713p:plain

コピーした内容をBillingの通知内容のAmazon SNSの部分に入力。

f:id:kazu22002:20201116141728p:plain

エラーがなければ設定について問題なし。作成を行います。

f:id:kazu22002:20201116141836p:plain

完了です。

slackでの表示

f:id:kazu22002:20201116142001p:plain

出来ました。

Amazon Chime

調べている中でAmazon Chimeの機能を初めて知りました。awsのチャットサービスですね。

正直使用料がかかるため使うことはなさそうな気がしてます。slack, chatwork, discordが無料で使えるうちは使わないかな。

awsを使えば連携が簡単になりそうだけど、チャットツールの外部連携機能やwebhookがあるからやり方次第で連携が簡単だからしょうがないと思います。

雑記

昔はcronとかhubotとか利用して、apiを駆使した仕組みで通知を作った気がします。サーバーを用意したくないので、ありがたい仕組みです。

とりあえずいろんなサービスを使ってみたいので、マニュアル通りにやってみましたがlambdaを利用して細かいデータが送信されるほうがありがたいのでやり方を変えて運用すると思います。

やっぱりチャットツールの便利さは偉大ですなー