コスト配分タグとAWS Budgetsを使ってIAMユーザー毎にコストを管理してみた

コスト配分タグとAWS Budgetsを使用して複数のIAMユーザー毎にコストアラートを設定してみました。
2023.12.19

はじめに

小規模の組織にてIAMユーザーのみで利用者を管理をしている。
今回はそんなケースで利用者毎にコストを管理する方法を考えてみました。

おおまかな手順

複数の利用者毎にコストのアラートを設定するには以下の設定が必要です。

  • リソースにタグをつける
  • Billing and Cost Managementでコスト配分タグを有効化する
  • AWS Budgets(以下Budgets)でタグ毎にアラートを設定する

前提

今回は3人の利用者(IAMユーザー)がいると仮定します。
それぞれのIAMユーザーが決められたコストを超過した場合に、管理者が検知できるような仕組みを作ります。
タグは付けられないリソースもありますが、今回は対象外とします。

リソースにタグをつける

まずはリソースにタグをつけます。
今回は次のようにタグを作成します。
タグ名:UserName
値:各ユーザー名(例:user1)

例えばEC2の場合は、インスタンス起動時に「名前とタグ」の項目から作成することができます。

このように、ユーザー毎に各リソース作成時にタグを付けていきます。
ここで新たに作成したタグは次のコスト配分タグの一覧に追加されます。

新たに設定したタグは、コスト配分タグの一覧画面に表示されるまでに最大24時間かかります。
私の環境ではおおよそ24時間かかりました。

コスト配分タグ

次に作成したタグをコスト配分タグとして登録します。
まずは「Billing and Cost Management」を開きます。

「コスト配分タグ」を選択します。

ユーザー定義のコスト配分タグ一覧より、先ほど作成したタグを選択して有効化をクリックします。

コスト配分タグをアクティブにするか聞かれるので、有効化を押します。

タグが有効化されます。

こちらのタグについても、有効化をクリックしてからアクティブになるまでに最大24時間かかります。
画面上はアクティブになりますが、次のBudgetsでアラートを設定する際にタグが表示されません。

検証を行う際、この時点で待ち時間に2日を費やしました。。。

Budgetsでアラート作成

次に「Budgets」を開きます。

予算を作成をクリックします。

予算タイプを以下のように選択します。
予算の設定:カスタマイズ
予算タイプ:コスト予算

次に予算の設定を行います、設定内容は適宜変更可能です。
予算名:Budgets Per User1
期間:日
予算更新タイプ:定期予算
開始日:今日
予算設定方法:固定
予算額:50$

次に、予算の範囲オプションでコスト配分タグとして設定したタグをフィルタリングします。
範囲オプション:特定の AWS コストディメンションをフィルタリングする
ディメンション:タグ
タグ:UserName
値:各ユーザー名(例:user1)

これでフィルターを適用します。

タグの値は複数選択できますが、今回は1つの値のみを選択して下さい。(上の図ではuser1)
複数のユーザーを同時にフィルターに追加すると、ユーザー毎にコストを管理できなくなります。

次にアラートのしきい値を設定します。
先ほどの予算額に対して、どの程度の割合でアラートを発行するのかを設定します。

アラートのしきい値を追加をして、しきい値を設定します。
今回は予算(50$)に達した場合にアラートを発行したいので、100%をしきい値に設定します。

Eメール受信者には、しきい値を超えた際にアラートを通知するメールアドレスを入力します。
必要に応じてAmazon SNSを使って、しきい値を超えた際にメッセージを送信することもできます。

問題がなければアラートを作成します。
同じように必要なユーザーの数繰り返します。

これでIAMユーザ毎にタグを使ってコスト監視を行うことができます。

Budgetsは1日に1回の集計で評価を行います。
そのため、予算額をオーバーした際に即時通知される訳ではない点には注意が必要です。

まとめ

普段からOrganizationsを使っている場合はIAMユーザー毎にコスト管理をするということは少ないかもしれません。
しかし、小さい規模でIAMユーザーを使った管理をしている場合には、意外とコスト管理なんかが面倒だったりします。
コスト配分タグを上手に使うことで、コスト管理を楽に行いましょう。