Amazon Web Services ブログ

IAM プリンシパルベースのコスト配分で Amazon Bedrock のコストを呼び出し元ごとに追跡する

本記事は 2026 年 4 月 17 日 に公開された「Track Amazon Bedrock Costs by Caller Identity with IAM Principal-Based Cost Allocation」を翻訳したものです。

Amazon Bedrock での生成 AI 利用が拡大すると、「Bedrock のコストを押し上げているのはどのチーム、アプリケーション、ユーザーか?」という疑問が生まれます。これまでは、AWS CloudTrail ログと請求データを手動で突き合わせ、API コールを特定の ID にマッピングする必要がありました。時間がかかり、ミスが起きやすく、大規模な運用では維持が困難です。

AWS は Amazon Bedrock 向けの AWS Identity and Access Management (IAM) プリンシパルベースのコスト配分を発表しました。Bedrock API コールごとに呼び出し元 (IAM ユーザーまたはロール) の ID を AWS Cost and Usage Report (CUR 2.0) と AWS Cost Explorer に自動的に記録する機能です。カスタムツールなしで、API コールを実行した IAM プリンシパルごとに Bedrock モデルの支出を追跡、配分、最適化できます。

本記事では、この機能の仕組み、セットアップ方法、Amazon Bedrock コストをきめ細かく可視化する方法を説明します。

IAM プリンシパルベースのコスト配分が重要な理由

複数のチーム、アプリケーション、ユーザーが同じ AWS アカウントを共有して基盤モデルを呼び出すケースは珍しくありません。プリンシパルレベルのコスト帰属がなければ、Bedrock のコストは単一の明細項目として表示され、次のような疑問に答えることが困難です。

  • Anthropic Claude で最もトークンを消費しているチームはどこか?
  • 顧客向けチャットボットと社内の要約ツールでは、どちらのコストが高いか?
  • Bedrock のコストを正しい部門やプロジェクトにチャージバックできるか?

IAM プリンシパルベースのコスト配分は、Bedrock API コールの実行者を自動的に記録し、その ID と IAM プリンシパルに付与されたタグを対応するコストおよびトークン使用量に関連付けることで、上記の課題を解決します。

具体的には次のことが可能です。

  • Bedrock モデルを呼び出している IAM ユーザーやロールの特定
  • Bedrock モデルの使用状況を部門、チーム、プロジェクトなどの組織構造にマッピング
  • Bedrock モデル費用の実際の利用部門への費用配賦(Chargeback)と部門別コストの可視化(Showback)
  • プリンシパルごとの使用パターン分析による最適化機会の発見

仕組み

CUR 2.0 データエクスポートで IAM プリンシパルデータを有効にすると、AWS は Bedrock API コールごとに呼び出し元の ID を自動的に記録します。有効化後、CUR 2.0 で次のデータを利用できます。

  • line_item_iam_principal: Bedrock API コールごとの呼び出し元の IAM ARN を含む新しいカラム (例: arn:aws:iam::123456789012:user/usernamearn:aws:sts::123456789012:assumed-role/rolename/session-name)
  • IAM プリンシパルタグ: 呼び出し元の IAM プリンシパルに付与され、コスト配分タグとして有効化されたタグが、Tags カラムに iamPrincipal/ プレフィックス付きで表示されます (例: department と costCenter をコスト配分タグとして有効化すると、iamPrincipal/departmentiamPrincipal/costCenter として表示)

Cost Explorer でも IAM プリンシパルのコスト配分タグでコストのグループ化やフィルタリングが可能です。ディメンションとして Tag を選択し、該当する “IAM principal” タグ (例: iamPrincipal/department) を選ぶと、部門、チーム、プロジェクトなど定義したタグディメンションごとに Bedrock モデルの支出を確認できます。

はじめに

Amazon Bedrock の IAM プリンシパルベースのコスト配分は 3 つのステップでセットアップできます。

前提条件

開始前に以下を確認してください。

  • Amazon Bedrock API コールに IAM ユーザーまたはロールを使用していること
  • IAM コンソールと Billing and Cost Management コンソールへのアクセス権があること
  • CUR 2.0 データエクスポートが設定済みであること (または作成権限があること)

重要: IAM プリンシパルベースのコスト配分は、Billing and Cost Management コンソールで管理アカウントレベルで有効化する必要があります。AWS Organization のメンバーアカウントが個別に有効化することはできません。

ステップ 1: IAM プリンシパルにタグを付与する

まず、Bedrock API を呼び出す IAM ユーザーとロールに、わかりやすく標準化されたキーでタグを付与します。

1. IAM コンソールに移動します

2. Bedrock API を呼び出す IAM ユーザーまたはロールを選択します

3. Tags タブで department、costCenter、team、project などのキーでタグを追加します (図 1 参照)

4. 該当する IAM プリンシパルに対して繰り返します

図 1: IAM ロールにタグを付与する IAM コンソール画面

ヒント: 低カーディナリティで分かりやすいタグ値を使用してください。department=engineering や costCenter=CC-1234 のようなタグが理想的です。セッション ID やタイムスタンプのような高カーディナリティの値は、Cost Explorer でのカーディナリティ増大や CUR ファイルサイズの肥大化につながるため避けてください。

ステップ 2: コスト配分タグを有効化する

次に、Billing コンソールでタグを有効化し、コストレポートに表示されるようにします。タグが有効化の対象として表示されるのは、そのタグが付与された IAM プリンシパルが少なくとも 1 回 API コールを実行した後です。IAM ユーザー、ロール、ロールを引き受けたセッションのいずれでも同様です。

5. Billing and Cost Management コンソールに移動します

6. Cost Allocation Tags に移動します

7. ステップ 1 で付与した IAM プリンシパルタグを見つけます

8. タグを選択して Activate を選びます (図 2 参照)

図 2: Cost Allocation Tags の有効化ページを表示する Billing コンソール画面

注意: タグの有効化後、Cost Explorer と CUR レポートにタグが表示されるまで最大 24 時間かかる場合があります。

ステップ 3: CUR 2.0 で IAM プリンシパルデータを有効にする

最後に、CUR 2.0 エクスポートに呼び出し元の ID データを含めるよう設定します。

9. Billing and Cost Management コンソールで Data Exports に移動します

10. 新しい CUR 2.0 エクスポートを作成します

11. “Include caller identity (IAM principal) allocation data” オプションを選択します (図 3 参照)

12. エクスポート設定を保存します

重要: IAM プリンシパルのコスト配分を有効にしても追加料金は発生しません。ただし、この機能を有効にすると CUR ファイルサイズが増加します。以前は 1 行だったコスト明細項目が、使用量に貢献した IAM プリンシパルごとに複数行に展開されるためです。多数の異なるプリンシパルによる大量の使用パターンでは、S3 ストレージコストが大幅に増加する可能性があります。これを踏まえて、古い CUR ファイルに対する S3 ライフサイクルポリシーの適用を検討してください。

図 3: IAM プリンシパル配分データのチェックボックスを表示する Data Exports 設定ページ

コストデータの確認

セットアップが完了しデータが流れ始めたら (最大 24 時間)、Cost Explorer と CUR 2.0 レポートの 2 つの方法で IAM プリンシパルごとの Bedrock コストを分析できます。

Cost Explorer での確認

13. AWS Cost Explorer に移動します

14. ディメンションとして Tag を選択します (図 4 参照)

15. 該当する “IAM Principal” タグ (例: iamPrincipal/costCenter) を選びます

16. 選択したタグディメンションごとの Bedrock モデル支出の内訳を確認します

図 4: IAM プリンシパルタグごとの Bedrock 支出内訳を表示する Cost Explorer チャート

CUR 2.0 レポートでの確認

Amazon Athena や任意の分析ツールで CUR 2.0 データをクエリします。line_item_iam_principal カラムには Bedrock 推論コストごとの完全な IAM ARN が含まれ、Tags カラムの iamPrincipal/ プレフィックス付きタグでタグディメンションごとにコストを分割できます。

ゲートウェイアーキテクチャへの対応

多くの組織では、Amazon Bedrock API コールを Amazon API Gateway、カスタムプロキシ、共有内部サービスなどの中間ゲートウェイ経由でルーティングしています。このアーキテクチャでは、CUR 2.0 に記録される IAM プリンシパルはエンドユーザーの ID ではなくゲートウェイの実行ロールになります。そのため、Bedrock コストが単一の IAM ロールに集約されて表示される場合があります。

Bedrock コストが 1 つの IAM ロールにまとまっている場合、ゲートウェイ経由のアクセスが原因と考えられます。ゲートウェイパターンでコストの可視性を維持するための戦略を紹介します。

コンシューマーグループごとに個別の IAM ロールを使用する

ゲートウェイの背後にあるチームやアプリケーションごとに個別の IAM ロールを割り当てます。ゲートウェイの実装を変更することなく、コスト帰属の粒度を維持できます。

ゲートウェイの実行ロールにタグを付与する

共有ロールを使用している場合でも、IAM プリンシパルタグ (department や application など) を付与してコストを適切なビジネスユニットにマッピングできます。

セッションタグで動的な帰属を実現する

ゲートウェイの背後で最もきめ細かなコスト帰属を実現するには、セッションタグが有効です。ゲートウェイが AssumeRole で共有 IAM ロールを引き受ける際、セッションタグをパラメータとして渡すことで、そのセッションのロールの既存タグを上書きできます。

仕組みは次のとおりです。

  1. ゲートウェイアプリケーションが AssumeRole または同様の AWS Security Token Service (STS) API を呼び出します
  2. ロールの引き受け時に、アプリケーションがセッションタグ (例: department=engineering、project=devx-v2、costCenter=CC-1234) を渡します
  3. セッションタグがそのセッションの対応する IAM ロールタグを上書きします
  4. そのセッション中の Bedrock API コールがセッションタグの値で CUR 2.0 に記録されます
  5. 共有ゲートウェイロール経由でも、アプリケーション、プロジェクト、部門レベルでのコスト配分が可能になります

注意: Bedrock はタグの和集合、つまり複数のタグソースを統合して記録します。元の IAM プリンシパルタグ、上書きされたタグ、セッション中に追加された新しいタグが含まれます。セッションタグは一致するタグキーの上書きや新しいタグの追加が可能ですが、既存の IAM プリンシパルタグを選択的に削除することはできません。ロール引き受け時のセッションタグの渡し方の詳細は、セッションタグに関する AWS ドキュメントを参照してください。

ベストプラクティス

IAM プリンシパルベースのコスト配分を効果的に実装するためのベストプラクティスです。

  • 低カーディナリティのタグキーを使用する。department、costCenter、project のようなタグが理想的です。頻繁に変わる値やリクエストごとに一意な値は避けてください。
  • 命名規則を標準化する。コスト配分を有効にする前に、タグキーの大文字小文字、命名パターン、許容値を組織全体で統一してください。一貫性のない命名 (例: Department、department、dept の混在) をすると、コストの集計・分析が困難になります。
  • 未使用のタグを定期的に確認・無効化する。古いタグや未使用のタグはコストレポートのノイズになります。有効なコスト配分タグを定期的に監査してください。
  • チーム間のタグ使用状況を監視する。Bedrock モデルを利用する新しい IAM プリンシパルに一貫してタグが付与されているか確認してください。

まとめ

IAM プリンシパルベースのコスト配分により、Amazon Bedrock の支出を押し上げている ID を正確に把握できます。IAM プリンシパルへのタグ付与、コスト配分タグの有効化、CUR 2.0 での IAM プリンシパルデータの有効化を行うことで、組織全体で Bedrock コストの追跡、配分、管理が可能になります。今すぐこの機能を有効にして、24 時間以内にチーム、部門、プロジェクトごとの Bedrock 支出の分析を始めましょう。

詳細は IAM プリンシパルベースのコスト配分のドキュメントを参照してください。この機能に関する質問やフィードバックは、AWS re:Post または AWS Support までお寄せください。

著者について

Koushik Das

Koushik Das

AWS のシニアテクニカルアカウントマネージャー。お客様の戦略的イニシアチブの推進と生成 AI 導入を支援しています。クラウド財務管理 (CFM) とヘルスケア・ライフサイエンス分野の AI イノベーションを専門としています。

Anand Gaurav

Anand Gaurav

AWS の Billing and Cost Management チームのプリンシパルテクニカルプロダクトマネージャー。FinOps と生成 AI の交差領域におけるコスト管理のプロダクト戦略を担当しています。


翻訳はソリューションアーキテクト 大磯が担当しました。原文はこちらです。