AWS超初学者向　予算を超えたらslack通知をする

# 初めに
これからAWSを学ぼうとしている方。やっぱり気になるのは利用料金ですよね。
無料枠で学びたい人も、多少は課金してより多くを学びたい人も。高額請求になったらどうしよう。
ネットでは何十万円にもなってしまった。なんて記事も見ます。

そんな事態にならないためにも、「課金発生」や「予算超過」でslack通知やメール送信をして適切なコスト管理を一番最初に設定することを強くお勧めします。


## 流れ
・ 通知先のslack チャンネル作成
・ 対象チャンネルにアプリ「aws chatbot」を追加
・ SNSトピックの作成
・ AWS Budgets（予算）の作成
・ AWS Chatbotの設定

では、早速やっていきましょう。（一番最初のslack チャンネルの作成に関しては説明を割愛します）

## Slackチャンネルに「aws chatbot」を追加する
対象チャンネルの「インテグレーション」から「アプリを追加する」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/cfee0560-b4df-121b-544b-6b8a06456807.png)

 AWS で検索し、「AWS　Chatbot」を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/f2f3fd0f-2dff-ba41-8e92-b67d1fe3f5f0.png)


## SNSトピックの作成
「sns」で検索し「Simple Notification Service」を選択 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/a2119759-39c8-371d-67aa-23d64258ef56.png)

サブメニューから「トピック」を選択　→ 「トピックの作成」を押下

タイプは「スタンダード」を選択。
名前は任意の名前を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/3a8b7412-8c6d-2aa7-07ac-3e49e863349e.png)


アクセスポリシー「アドバンスト」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/cc4a23dd-51dd-617c-7c29-48e7ad8670b6.png)

「Statement」に以下を追加
```
    {
      "Sid": "AWSBudgets-notification-1",
      "Effect": "Allow",
      "Principal": {
        "Service": "budgets.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "atode"
    },
```

こんな感じになります（最後の,(カンマ)を忘れないように）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/e0bb90d0-6889-2c9c-aeb3-31e51d3d5800.png)

トピックの作成を押下


作成後、ARNをコピーします。
※このARNは後続の予算作成時にも使用します。コピーしておいてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/15a4e04f-d0e5-d652-f9c0-e3aa9406e419.png)


トピックの編集からアクセスポリシーを変更します。
下記の「atode」の箇所を上記でコピーしたARNで更新。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/e6c99414-9a65-c998-5729-cac3d3286d2a.png)


## AWS Budgets（予算）の作成

検索に「予算」と入力し、「AWS Budgets」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/ee1cfd59-4269-bb24-71fe-9b8e4566d80a.png)

「予算を作成」を押下

カスタマイズ、コスト予算を選択し、次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/5c187a96-475c-dceb-732f-5b066aff72ec.png)

今回は以下（一日で５ドルの予算を設定）で設定
ここの予算は各自で調整
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/94ef2805-8e2a-53c8-ff9a-a937dfcf4636.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/e1fa9cdf-e6d5-102d-b90d-1ec0b184fac7.png)

次へ

アラートの閾値を追加します
今回は100%（５ドル超過）で通知するようにします。
閾値は複数設定することができます。100%(5ドル)で通知。200%(10ドル)で通知など
「Amazon SNS ARN」に上記で作成した SNSトピックのARNを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/2f545c33-805a-3bf4-b68a-b9b68675543b.png)

次へを押下し、設定内容を確認し問題なければ「予算を作成」を押下


## AWS Chatbotの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/f7dfcd58-bc06-9f69-20fc-3f64dc92a178.png)

チャットクライアントにslackを選択し、クライアントを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/918ad434-befc-05f7-e617-bf434450ad21.png)

slackにログイン済みであれば下記画面が表示されます。未ログインであればログインしてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555551/aa6de1eb-1630-14d2-e4a4-b903f72104dd.png)

ワークスペースを追加したら「新しいチャンネルを設定」
設定名やチャンネルIDを設定

ロール設定は「チャネルロール」
ポリシーテンプレート及びチャネルガードレールポリシーはデフォルトで選択されているものでOK

通知オプションでリージョン（SNSトピックを作成したリージョン　通常は東京だと思います）を選択。
トピックは先ほど作成したトピックを選択し設定

これで予算に合わせてslack通知できるようになりました。


## まとめ
比較的簡単に設定できますが、これからAWSを学ぼうとしている方にはちょっと難しい箇所もあるかもですが、思わぬ高額請求とならないためにも頑張って設定しておきましょう・