【事例で学ぶ】AWS Budgetsを利用した予算設定
AWS認定のSAProfessionalに落ち続けたので、初心に帰ってハンズオンでAWSを理解していくシリーズ
コメントや修正点あればご連絡をお願いします!
AWSを利用する上で欠かせないコストの観点
フレームワークの6つの柱のうちの一つである「コスト最適化」として挙げられるくらい重要です。
なんせ、クラウドサービスを利用しまくるとコストも制限に増えてしまいます、、
今回はそんな予算設定を行う場合の設定方法を事例に沿って学んでいきます。
【今回のケーススタディ】
会社でAWSを担当しているsyunはAWS organizationでアカウントを管理しています。
最近開発プロジェクトでのAWS予算超過が問題になっており、中でも社員Aさんの予算超過が顕著です。
syunは社員Aさんが予算超過をしないように対策を講じる必要があります。
予算超過時にはAさんはいかなるAWSサービスが利用できなくなってもかまいません。
利用するAWSサービス
- AWS Organizations
- AWS Budgets
AWSにおける予算配分戦略
実際の業務では様々な単位でAWSを利用していると思います。
通常業務であれば「組織単位」で予算を設定する必要がありますし、プロジェクトが立ち上がると「プロジェクト単位」での管理を行う場合もあります。
予算を考える上では、それぞれのケースに応じた予算配分戦略が必要になってきます
予算とは少し違いますが、コスト配分については下記のAWS公式ブログが参考になります。
AWS Budgets
予算の設定はAWS Budgetsから行います。billing もしくはアカウントから遷移する画面にメニューがあります。
AWS Budgetsとは、AWSで利用している各種リソースのコストを監視し、設定した予算に近づいた場合やコスト超過見込まれる場合にSNSやメールにて通知を行うサービスです。
予算を超過した場合に、EC2を止めるなどのアクションを付与するAWS Budgets Actionsもこのサービス内の機能です。
予算設定をする際には、メンバーアカウント全体に対してだけでなく各種フィルタを用いて細かく設定をすることも可能です。
Organization のOUに直接予算設定を行うことはできません。タグなどを利用した「コスト配分モデルによる予算設定」が必要です。
AWS Budgetの機能
AWS budgetsでは主に次の3つの機能が利用できます。
リソース使用状況のモニタリング
設定された予算に対して、下記の2つを確認することができます。
- 実際に利用されたコストの割合
- 予測される月末コストの割合
このサンプルでは月間の予算が$50に設定されていますので、それぞれ下記の意味になります。
- 実際に消費されたのは$23.10で予算の46.20%
- 予測される月末コストは$35.66で予算の71.32%
とても分かりやすいですね。これでコストの使用状況は一目瞭然です。
レポートの作成
設定された予算についてのコスト使用状況をわざわざ管理コンソールまでアクセスせずとも受け取ることができます。
送信方法はメールのみとなります。
このレポートは複数の予算設定をまとめて受け取ることもできます。
レポート配信は有料です。
配信されるレポートは 1 件につき 0.01 USDのコストがかかります。
アラート発報
予算を超過した場合に下記の手段で通知を行うことができます。
- メール
- Amazon SNS
- AWS Chatbot Alerts
想定ケース メンバーアカウントへの予算設定
前置きが長くなりましたが、今回はメンバーアカウントであるA社員へ予算を設定します。
Aさんはコスト超過常連の問題児なので、予算は毎月1ドルに制限してしまいます。
設定手順
予算を作成
Cost ManagementからBudgetを選択
「予算を作成」で新たに予算設定を行います。
予算タイプの設定
予算タイプについて、予算を設定する対象を細かく設定するには「カスタマイズ」を選択します。
期間や予算集計対象をカスタマイズして設定することができます。
何を予算として計算するかを設定します。
今回はコストを監視したいので、推奨設定通り「コスト予算」を選択します。
予算設定のフィルタ
今回一番大事なフィルタ設定です。
今回はAさんのアカウントに対して予算設定を行うので、フィルターのディメンションは「リンクされたアカウント」を選択
何をするとリンクされたアカウントになるのかよくわかりませんでしたが、管理者アカウントからOrganizationsで作成したアカウントは問題なく表示されていました。
ただし、メンバーアカウントを作成してすぐには表示されないので注意が必要です。
予算として他に設定できるフィルタにはこのようなものがあります。
- サービス
- リージョン
- インスタンスタイプ
- コストカテゴリ
- タグ
- AZ
サービス × タグなど、複数のフィルタを掛け合わせて複雑な予算を組むことも可能です。
最後に「フィルターを適用」ボタンを押して完了です。
私のようにこのボタンを押し忘れてフィルタが反映されず、余計な時間を使う事の無いよう・・・
アラート設定
最後にAさんが予算を超過した際にアラートが発報されるように設定します。
しきい値として、予算額の何%で発報するかなど設定が可能です。
通知方法として選択できるのは、冒頭でご説明した通り下記3パターンです。
- メール
- Amazon SNS
- AWS Chatbot Alerts
これでAさんへの予算設定は完了です。今後AさんがAWSサービスを使い過ぎたらすぐに気づける体制が整いました。
ただし!これだけだけではアラートが発報されるだけで、Aさんはその後自由にEC2を立ち上げることができます。
権限に対して制限を行う場合はAWS budgets Actionsの設定も必要です。
Tips
-
メンバーアカウントであるAさんは自身に設定された予算を変更できるか
-
もちろんできません。
デフォルト設定上、メンバーアカウントの所有者は自分の予算を作成することができますが、他アカウントの予算を作成または更新することはできません。IAM を使用して、メンバーアカウントのユーザーに、管理アカウントの予算の作成、更新、削除、または読み取りを許可できます。
-
IAMユーザで予算などの請求コンソールを利用することができるか
-
デフォルトではできません
IAMユーザにアクセス許可を行うためには特別な設定が必要になります。
設定は所有者またはアカウント管理者が「アカウント設定」から行う必要があります。
編集ボタンを押下することで、請求情報サービスへのIAMユーザアクセスをアクティブ化する設定が表示されます。
実際にIAMユーザで請求情報を利用する場合はIAMロールなどのポリシーも許可されている必要があります。
こちらもご参照ください。