【備忘録】AWS 予算の設定やってみた

<h3>はじめに</h3>
業務でAWSアカウントの初期セットアップをすることがあったので、設定の1つとしてCostExplorerを使ったAWSの利用料のアラームを設定した備忘録です。

<h3>通知用SNSの作成</h3>
まずはAWSコンソールにログインし、検索バーに"sns"と入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/36996e13-d5cf-8141-ed9f-98aac8166872.png)

左メニューのトピックからトピック一覧を表示し「トピックの作成」から作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/78b42618-2829-c5ad-69d2-19bf87e4e46f.png)

タイプはスタンダードを選択し、名前と表示名にコストを通知してくれそうな名前を入力、アクセスポリシーはアドバンストにし、次のポリシーに置き換え、残りはデフォルト設定で「トピックの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/d1d5c161-50c6-aa0d-f89c-0db705748646.png)

<details><summary>SNSトピックアクセスポリシー</summary>

```
{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "<アカウントID>"
        }
      }
    },
    {
      "Sid": "AWSBudgets-notification-1",
      "Effect": "Allow",
      "Principal": {
        "Service": "budgets.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:<リージョン>:<アカウントID>:<トピック名>"
    }
  ]
}
```

</details>

トピックができたら次はサブスクリプションを作成
作成したトピックを表示し、サブスクリプションのタブから「サブスクリプションの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/42aeb52b-b2df-182a-4957-809d7d236b7a.png)

作成画面が開いたら"プロトコル"を「Eメール」"エンドポイント"に通知先のメールアドレス(もちろんメーリングリストでも可)を入力し、他はデフォルトで「サブスクリプションの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/30428b44-75f4-e601-5b39-4713106784ac.png)

サブスクリプションを作成したら"AWS Notification - Subscription Confirmation"の件名のメールが届くので"Confirm subscription"で承認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/6637d91c-bef3-5d19-2e97-8bddba0bced9.png)

Subscribe完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/3ecd306a-c7de-e504-5dd6-df15e40ee790.png)

トピックの画面に戻ってサブスクリプションのIDの欄が保留中からIDに変わっていればOK

<h3>予算の設定</h3>
検索バーに"CostExplorer"("CostE"までで十分です)と入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/2c87fbc8-b38c-2ad6-267e-26674910309e.png)

CostExplorerのページが開いたら、左メニューのBudgetsを開き「予算の作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/b39cf9bf-10a3-9140-b542-c5a935090179.png)

予算の設定は「カスタマイズ」を選択し、予算タイプは「コスト予算」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/16d3ea56-05cc-ba3d-ddb9-a5223874bd51.png)

次のページでは予算名に利用料を見守ってくれそうな名前を付け、期間は"月"、予算更新タイプは"定期予算"、開始月は今月を指定、予算設定方法は"固定"、予算額に通知したい金額を入力、予算の範囲はデフォルト設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/7ac53bb2-4046-bfa9-7337-ee7a04c3031b.png)

今回は$1500大体20万円で設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/7c8b4307-9840-010c-fdfc-8219b9f28b30.png)

今回は予算額の80%と100%で通知が飛ぶように設定
通知先にSNSアラートを選択し、先ほど作成したSNSのARNを記載
()
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/8cc7af8d-c927-3961-45ef-87049834370d.png)

次のページでは「アクションを追加」から閾値に達した時のアクションを設定が可能
EC2を停止させるなどのアクションが設定可能(設定する場合は専用のIAMロールが必要)
今回は特に設定しないのでスキップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/0792a3ae-5b78-b7cc-ce30-1e0aa2c91806.png)

最後のページで設定を確認したら「予算を作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/5952dec3-edde-2cdf-bb4f-ff30be98ab76.png)

予算が設定できました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/7ae1cb83-7ca6-d3ba-efb6-ec5c5a1bd54a.png)

<h3>さいごに</h3>
誤操作や削除忘れなどでコストが高くなりすぎないように、AWSアカウントを作成した時には予算のアラーム設定をしてみてはいかがでしょうか。