💰

AWSの「Billing Conductor」の設計を考えてみた

2024/05/08に公開

Billing Conductorの基本的な使い方から設計箇所・留意点をSI案件で設計する機会があったので、まとめてみました。

Organizationsを使ったマルチアカウントかつ共通基盤の構築案件でBilling Conductorの使用要望をよく頂くのですが、Billing Conductorの日本語情報はあまり多くないですよね。

この記事がBilling Conductorをこれから使う誰かに役立てば幸いです。

Billing Conductorってそもそも何よ?

一言でいうと、AWS利用料のコスト管理ツールです。 Billing ConductorはAWS純粋のコスト管理ツールで、3rdパーティのコスト管理ツール(例:アルファ社のRipple等)もよく使われています。

Billing Conductorを使うと、3rdパーティツールに比べて安価に、そして簡単に細かい配賦ロジックを作ることが出来ます。例えば、「EC2の利用料を10%割引する」や「AWS利用料全体に対して10%のコストを追加する」ということを特定のAWSアカウントに対して適用できます。

また、Organizationsだと配下の全AWSアカウントの利用料が一括請求されるのに対して、Billing Conductorを使えば、OrganizationsのAWSアカウントをグループに小分けにして、グループごとに一括請求することが出来ます。

具体的なユースケースとしては、SI案件でOrganizationsごとまるっとお客様に提供し、「顧客で複数のAWSアカウント全体を管理する部署」から「AWSアカウントを実際に利用する各部署」にAWS利用料を配賦して請求する場合などに活用できます。

具体的な利用イメージ

といってもなかなか利用イメージがわきづらいと思うので、図と一緒に補足説明します。

  • 複数の部署にAWSアカウントを提供する部隊(CCoEのような組織)が使用する。 この部隊はAWSアカウントだけではなく、共通基盤の機能も各部署に提供する。また、各部署にAWS利用料と共通基盤の利用料を毎月請求する。

  • Billing Conductorを使うと、各部署が使用するAWSアカウントをグルーピングして、「その部署が管理するAWSアカウントの利用料+共通基盤の利用料」をまとめた請求書をグループごとに作成できる。

  • 各部署の担当者は自分が使用するAWSアカウント上で、Billing Conducotrで作成された各部署ごとの請求書を確認することが出来る。

Billing Conductor自体の利用料

GAしてしばらくの間はBilling Conductorは利用規模に応じた従量課金だったのですが、2023年4月から利用料体系が変更されました。

アカウントベースの課金となっており、請求グループ(後述します)に含めるアカウントの数に応じて課金されます。具体的には、最初の 500 個までは 1 アカウントあたり 8.25 USD、次の 1,500 個は 6.75 USD、2,000 個を超えると 5.25 USD となります。

どこで設定するか?

Organizationsの管理アカウント(いわゆるPayerアカウント)で設定します。

Payerでまず請求グループ(後述)というものを作ると、グループ内のAWSアカウント(Linkedアカウント)の利用料が合算されてPayer上で見ることができます。
グルーピングしたアカウントで一括請求される金額が見れるイメージですね。

以下、マネジメントコンソールのサービストップ画面です。

設定項目って何があるの?

請求グループ

  • 疑似的な一括請求のグループ。1つのグループにつき、「所属するAWSアカウントの合計AWS利用料+設定した配賦ロジックに従った金額」が記載された請求書が1つ発行される。
  • グループの請求書が見えるAWSアカウントを「プライマリーアカウント」という。

仕様

  • プライマリーアカウントは各グループに一つだけ指定する必要がある。
  • また、請求グループが作成された後でプライマリアカウントを変更することはできないので要注意
  • 1つのAWSアカウントは1つのグループにしか所属することができない。(複数のグループに所属はできない)

料金プラン・カスタム明細項目

独自の配賦ロジックの設定に使う。(請求グループに割り当てることが可能)

  • AWS利用料に対して、「割合」で割増/割引した金額を請求するとき → 「料金プラン」を設定
    • 「全体に10%乗せる」、「EC2だけ10%引き」のようなルールを定義可
    • e.g. 共通基盤の利用料として5%割増で請求する。
  • 個別に「固定費」として追加/減額した金額を請求するとき → 「カスタム明細項目」を設定
    • e.g. ミドルウェアのライセンス費を200$ 請求する。
  • 毎月の固定金額が自動的に適用されるように設定できる

利用時に注意点

Billing Conductorが出力するグループごとの請求書には含まれない項目があります。
これは利用する上で非常に大事な制約なので、留意して設計してください。

  • クレジット・税金が含まれない。
    • 請求書の金額をそのまま利用者から請求する場合、消費税分(10%)を料金ルールに設定する必要がある。
  • AWSサポート費用が含まれない。
    • AWSアカウントが全てエンタープライズサポートなら、10%を料金プランに設定する。
    • 請求グループ内にディベロッパーサポート/エンタープライズサポート等、混在している場合、料金プランの割合を検討する必要がある。(サポートレベルで請求グループをわけることも可)
  • RI/Savings Plansは請求グループのなかで割引が共有されて計算される。
    • Linkedアカウント側で購入したRI/Savings Plansの共有範囲を請求グループごとにできる。(Billing Conductorを使わない場合、Organizationsの一括請求の中で1つしか共有範囲を設定できない)

設計ポイント

最初に考えるべきは請求グループの分割単位

「請求グループ=1つの請求書にまとめるAWSアカウント群」なので、1つの請求書にどこまでまとめたいか次第で決まります。
なので、結局「請求書を業務でどう使うか」次第で決まりますが、代表的なパターンは下記かなと思います。

  • 1部署につき1グループ
  • 1ユニットにつき1グループ

もちろんシステム(本番・開発・ステージング・DR環境)ごとにグループを作成しても良いですが、請求グループが増えるため、毎月確認する請求書の数も増えていきます。

プライマリーアカウントの指定

請求グループの請求書を見れるアカウントなので、こちらはお客様(実際に請求書を見る方)と同意して指定する必要があります。

プライマリーアカウントの指定変更はできない(請求グループの再作成が必要になる)ため、Sandbox的なアカウントは避けたほうが良いでしょう。

料金プラン

割増/割引のパーセンテージ(%)の指定です。
こちらはAWSサポートの費用/税金だけでなく、請負で維持管理するケースなら維持管理フィーを指定するのかなと思います。

カスタム明細項目

こちらは固定費の指定です。

ライセンス費などの初期費も請求書に計上させたい場合は、利用期間を1か月としたカスタム明細項目を作成する等の運用が必要になります。

また、アカウント数などリソースに応じたライセンス費にカスタム明細項目を使う場合、毎月カスタム明細項目を作成する運用が必要になります。
つまり変動的な固定費を請求書に乗せたい場合は、毎月カスタム明細項目を作成するという運用が必要になってしまいます。

また、1つのカスタム明細項目は1つの請求グループにしか割り当て出来ないため、請求グループの数だけカスタム明細項目を作成する必要があります。

カスタム明細項目を毎月作成する場合、請求グループを切りすぎないようにするのが運用負荷を抑える上で重要です。

まとめ

Billing Conductorは誰もが使うツールではありませんが、めんどくさくて価値を生まない「AWS利用料のコスト配賦」の業務を簡単にしてくれる良いツールだと思います。
また、頻繁に機能アップデートも入っているため、今後にも期待です!

Discussion