はじめに:その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-id
やproject
を有効化するのを忘れないでください。有効化してから24時間程度で、Cost Explorer上でこのタグによるフィルタリングが可能になります。
ユースケース1:マルチテナントSaaSにおけるテナント別コスト計算
この仕組みを活用すれば、マルチテナントSaaSのコスト管理を劇的に改善できます。
- テナント契約時: 新規テナントが契約されたタイミングで、AWS Lambda関数などをトリガーし、
create-inference-profile
をプログラムで実行。テナントIDをタグに埋め込んだプロファイルを作成します。 - APIリクエスト時: アプリケーションは、APIリクエストに含まれる認証情報(JWTなど)からテナントIDを特定します。
- 動的なプロファイル選択: 特定されたテナントIDに基づき、使用すべき推論プロファイルのARNを決定し、Bedrockを呼び出します。
このアーキテクチャにより、Cost Explorerでtenant-id
タグでフィルタリングするだけで、テナントごとの正確なBedrock利用コストを完全に把握し、利用量ベースの課金やリソース最適化に繋げることができます。
まとめ:推論プロファイルを制する者が、Bedrockのコストを制する
Application Inference Profilesは、単なる補助機能ではありません。BedrockのFinOpsを実践し、特にマルチテナント環境や複数プロジェクトでの利用において、コストの透明性とガバナンスを確保するための不可欠なツールです。
「誰が、どのモデルを、どれだけ使ったか」を正確に把握する能力は、これからのAI開発者にとって、技術力そのものと同じくらい重要なスキルとなります。このガイドを参考に、ぜひ推論プロファイルを導入し、データに基づいたインテリジェントなコスト管理を実現してください。
“`
コメント