Amazon Bedrock クロスリージョン推論で必要な最小権限 IAM ポリシーを検証してみた
はじめに
生成 AI を個人的に利用する機会は多いです。ですが、AWS 上の Web サービスから Amazon Bedrock を呼び出す経験はありませんでした。今回、アプリケーションからクロスリージョン推論で必要な最小権限を試す機会がありました。検証結果と私の学びを共有します。
クロスリージョン推論とは
Amazon Bedrock のクロスリージョン推論は、複数リージョンのモデルリソースを活用する機能です。リクエストが自動的に利用可能なリージョンにルーティングされます。特定リージョンでモデルが混み合ってて利用できない場合でも他リージョンで推論が可能になります。
詳細な仕組みについては、以下の記事で詳しく解説されています。
画像引用: Getting started with cross-region inference in Amazon Bedrock | Artificial Intelligence
検証環境
検証用に簡単なチャットボットを構築しました。Lambda から Bedrock を呼び出す際の IAM ロールの IAM ポリシーの権限設定を確認します。
非常に簡素な作りですがメッセージを入力すれば、生成 AI で推論した結果が返ってきます。網走の面積まで把握していなかったのですが、そこ以外は網走の民から見ても違和感のない回答です。
検証にはアジアパシフィック地域内で Claude Sonnet 4 が利用可能なクロスリージョン推論プロファイルを利用します。
検証
以下、3 つのパターンで IAM ポリシーの検証した結果を説明します。
パターン1: 推論プロファイルのみ許可
アジアパシフィック地域のクロスリージョン推論プロファイルだけを許可した場合です。
画像引用: Getting started with cross-region inference in Amazon Bedrock | Artificial Intelligence
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "bedrock:InvokeModel",
"Resource": [
"arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0"
],
"Effect": "Allow"
}
]
}
結果
ルーティング先のリージョンで指定したモデルを呼び出す権限がないためエラーになりました。
[ERROR] 2025-08-02T04:31:33.399Z cad46bd0-cddc-498d-ae28-232edf30dc59 Error calling Bedrock: An error occurred (AccessDeniedException) when calling the Converse operation: User: arn:aws:sts::123456789012:assumed-role/TestRole/TestFunction is not authorized to perform: bedrock:InvokeModel on resource: arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0 because no identity-based policy allows the bedrock:InvokeModel action
パターン2: 推論プロファイル + 一部リージョンのモデル許可
アジアパシフィック地域のクロスリージョン推論プロファイルを許可し、日本のリージョンの指定モデルだけを許可した場合です。
画像引用: Getting started with cross-region inference in Amazon Bedrock | Artificial Intelligence
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "bedrock:InvokeModel*",
"Resource": "arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0",
"Effect": "Allow"
},
{
"Condition": {
"StringLike": {
"bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0"
}
},
"Action": "bedrock:InvokeModel*",
"Resource": [
"arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
],
"Effect": "Allow"
}
]
}
結果
日本のリージョンにルーティングされれば成功します。アジアの他リージョンへルーティングされるとエラーになります。
[ERROR] 2025-08-03T20:54:28.999Z 3db424e8-a840-4c8a-886a-439ec3e4e71f Error in handler: Failed to get response from Bedrock: An error occurred (AccessDeniedException) when calling the Converse operation: User: arn:aws:sts::123456789012:assumed-role/TestRole/TestFunction is not authorized to perform: bedrock:InvokeModel on resource: arn:aws:bedrock:ap-south-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0 because no identity-based policy allows the bedrock:InvokeModel action
ちなみに、ルーティング先を特定のリージョンに限定することはサポートされていません。
パターン3: 推論プロファイル + 全対象リージョンのモデル許可
最終的に必要だった設定です。クロスリージョン推論で利用される全リージョンのモデルを個別に許可します。
画像引用: Getting started with cross-region inference in Amazon Bedrock | Artificial Intelligence
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "bedrock:InvokeModel*",
"Resource": "arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0",
"Effect": "Allow"
},
{
"Condition": {
"StringLike": {
"bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0"
}
},
"Action": "bedrock:InvokeModel*",
"Resource": [
"arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-south-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-south-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-southeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-southeast-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-southeast-4::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
],
"Effect": "Allow"
}
]
}
結果
どのリージョンにルーティングされても問題ありません。
補足情報
公式ドキュメントの IAM ポリシー例
推論プロファイル経由でのみモデルを呼び出すように制限する Condition
を使った IAM ポリシーが、以下のドキュメントで紹介されています。
Prerequisites for inference profiles - Amazon Bedrock
{
"Condition": {
"StringLike": {
"bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0"
}
},
"Action": "bedrock:InvokeModel*",
"Resource": [
"arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
最初はシンプルな許可ポリシーを作成していましたが、このドキュメントを発見してからより制限したポリシーに修正しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"bedrock:InvokeModel"
],
"Resource": [
"arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-south-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-south-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-southeast-1::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-southeast-2::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0",
"arn:aws:bedrock:ap-southeast-4::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
],
"Effect": "Allow"
}
]
}
対象リージョンの確認方法
許可がルーティング先のリージョンは以下のページで確認できます。
リンク: Supported Regions and models for inference profiles - Amazon Bedrock
マネージメントコンソールからも確認できます。Bedrock のサービスページでクロスリージョン推論の対象モデルを選択すると表示されます。
推論プロファイルのリージョンは不変
推論プロファイルで使用されるリージョンは不変です。IAM ポリシーを厳密に定義することで新しいリージョンが追加されてルーティング後に権限エラーになる心配はありません。
Inference profiles are immutable, meaning that we don't add new Regions to an existing inference profile. However, we might create new inference profiles that incorporate new Regions. You can update your systems to use these inference profiles by changing the IDs in your setup to the new ones.
Supported Regions and models for inference profiles - Amazon Bedrock
リージョンが追加される場合は新しい推論プロファイルのバージョンが作成されるそうです。より多くのリージョンを利用したい場合は、新しいバージョンへの更新を検討しましょう。ただし、IAM ポリシーで厳密にリージョンを制限している場合は、ポリシーの修正が必要になります。
参考: GenU の IAM ポリシー
GenU(Generative AI Use Cases)v4.3.2 の MCP チャットボットでは、様々なモデルや、機能を試せるよう広範囲な権限が設定されていました。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "bedrock:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"s3:Abort*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:PutObjectLegalHold",
"s3:PutObjectRetention",
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::generativeaiusecasesstack-apifilebucket8fb29855-yncdgb5ey2es",
"arn:aws:s3:::generativeaiusecasesstack-apifilebucket8fb29855-yncdgb5ey2es/*"
],
"Effect": "Allow"
}
]
}
おわりに
Amazon Bedrock のクロスリージョン推論で必要な IAM ポリシーを検証しました。推論プロファイルの権限だけでは不十分で、ルーティング対象の全リージョンのモデル権限が必要でした。
アプリケーションからクロスリージョン推論を利用する際の参考になれば幸いです。