PR

Bedrockコスト按分の最終兵器:Application Inference Profiles徹底活用術【マルチテナントSaaS対応】

はじめに:そのBedrockコスト、本当に「誰が」使ったか説明できますか?

マルチテナントSaaSや、複数のプロジェクトでAmazon Bedrockを共有している環境で、こんな課題に直面していませんか?

  • 「今月のBedrockの請求額、どのテナント(プロジェクト)がどれだけ使ったのか全くわからない…」
  • 「テナントごとに利用量ベースの課金をしたいのに、コストを正確に按分できない…」
  • 「開発チームが好き勝手にモデルを呼び出すので、コストがガバナンス不能に陥っている…」

これらの課題を放置すれば、AIの活用がビジネスの成長ではなく、コストセンター化するリスクがあります。このコスト按分の悪夢を解決する最終兵器、それがApplication Inference Profiles(アプリケーション推論プロファイル)です。

これは単なるタグ付け機能ではありません。BedrockのFinOpsを実践し、利用コストをアプリケーションやテナント単位で正確に追跡・管理するための戦略的なツールです。

この記事を読めば、あなたも推論プロファイルを使いこなし、テナントごとの利用料を1円単位で可視化し、データに基づいたコスト管理を実現できるようになります。

Application Inference Profilesとは?ただのタグ付け機能ではない

Application Inference Profiles(以下、推論プロファイル)は、オンデマンドモデルの呼び出しリクエストを、特定のアプリケーションやテナントに紐付けるためのリソースです。

その中核的な仕組みは、モデルを呼び出す際に、model-arn(例: anthropic.claude-3-haiku-v1:0)の代わりに、独自に作成した「推論プロファイルのARN」を指定することにあります。

これにより、以下のメリットが生まれます。

  • 正確なコスト按分: プロファイルに付与したコスト配分タグ(例: tenant-id)に基づき、AWS Cost Explorerでコストを正確に分類・追跡できます。
  • 利用状況の監視: CloudWatchと連携し、プロファイル単位での利用状況(トークン数、呼び出し回数など)を詳細に監視できます。
  • ガバナンス強化: IAMポリシーと組み合わせることで、「特定のIAMロールは、この推論プロファイル経由でしかBedrockを呼び出せない」といった厳格な利用制限をかけることが可能です。

注意点: 2025年8月現在、推論プロファイルはオンデマンドモデル利用時のみサポートされており、プロビジョンドスループットは対象外です。

【実践ハンズオン】AWS CLIで推論プロファイルを作成・管理する

推論プロファイルは、現在コンソールからは作成できず、AWS CLIやSDK経由でのみ管理可能です。ここでは、CLIを使った基本的な操作を解説します。

ステップ1:推論プロファイルの作成

以下のコマンドで、特定のモデル(この例ではClaude 3 Haiku)に紐付いた推論プロファイルを作成します。

aws bedrock create-inference-profile --name "tenant-a-profile" \
  --model-id "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-haiku-v1:0" \
  --tags '[{"key": "tenant-id", "value": "tenant-a"}, {"key": "project", "value": "saas-app"}]'
  • --name: プロファイルの一意な名前。
  • --model-id: 紐付ける基盤モデルのARN。
  • --tags: コスト配分に利用するタグをキーと値のペアで指定します。

成功すると、プロファイルのARN(inferenceProfileArn)が返されます。このARNは後続のステップで非常に重要になります。

ステップ2:IAMポリシーの設定

次に、特定のIAMロール(例: アプリケーションの実行ロール)が、このプロファイル経由でのみBedrockを呼び出せるように制限します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "bedrock:InvokeModel",
            "Resource": "arn:aws:bedrock:us-east-1::inference-profile/tenant-a-profile-xxxx"
        }
    ]
}

Resourceに、基盤モデルのARNではなく、ステップ1で取得した推論プロファイルのARNを指定するのがポイントです。

ステップ3:アプリケーションからの呼び出し(Boto3)

アプリケーション(Python)からBedrockを呼び出す際も、modelIdに推論プロファイルのARNを指定します。

import boto3
bedrock_runtime = boto3.client('bedrock-runtime')
response = bedrock_runtime.invoke_model(
modelId='arn:aws:bedrock:us-east-1::inference-profile/tenant-a-profile-xxxx', # 推論プロファイルのARN
body=body
)

ステップ4:コスト配分タグの有効化

最後に、AWS請求コンソールの「コスト配分タグ」セクションで、キーとして設定したtenant-idproject有効化するのを忘れないでください。有効化してから24時間程度で、Cost Explorer上でこのタグによるフィルタリングが可能になります。

ユースケース1:マルチテナントSaaSにおけるテナント別コスト計算

この仕組みを活用すれば、マルチテナントSaaSのコスト管理を劇的に改善できます。

  1. テナント契約時: 新規テナントが契約されたタイミングで、AWS Lambda関数などをトリガーし、create-inference-profileをプログラムで実行。テナントIDをタグに埋め込んだプロファイルを作成します。
  2. APIリクエスト時: アプリケーションは、APIリクエストに含まれる認証情報(JWTなど)からテナントIDを特定します。
  3. 動的なプロファイル選択: 特定されたテナントIDに基づき、使用すべき推論プロファイルのARNを決定し、Bedrockを呼び出します。

このアーキテクチャにより、Cost Explorerでtenant-idタグでフィルタリングするだけで、テナントごとの正確なBedrock利用コストを完全に把握し、利用量ベースの課金やリソース最適化に繋げることができます。

まとめ:推論プロファイルを制する者が、Bedrockのコストを制する

Application Inference Profilesは、単なる補助機能ではありません。BedrockのFinOpsを実践し、特にマルチテナント環境や複数プロジェクトでの利用において、コストの透明性とガバナンスを確保するための不可欠なツールです。

「誰が、どのモデルを、どれだけ使ったか」を正確に把握する能力は、これからのAI開発者にとって、技術力そのものと同じくらい重要なスキルとなります。このガイドを参考に、ぜひ推論プロファイルを導入し、データに基づいたインテリジェントなコスト管理を実現してください。

“`

コメント

タイトルとURLをコピーしました