日本国内だけでAmazon BedrockのClaudeモデル実行を許可するIAMロールを試してみた
データ事業本部の鈴木です。
昨年10月から、日本国内クロスリージョン推論機能がリリースされ、Claudeの一部モデルで日本国内に閉じた推論が可能になっています。
以下のような資料で紹介されています。
基本的には、日本国内クロスリージョン推論向けのシステム推論プロファイルを使って推論をすればよいのですが、IAMポリシーでもほかのリージョンで実行できないように指定できると安心なため、ご紹介します。
なお、今回は書きませんが、Service Control Policyでも制限が可能です。
IAMポリシーでの指定方法を確認する
eographic cross-Region inferenceにてIAMポリシーの指定方法が紹介されています。
ポリシー内では、以下の許可が設定されています。
- 指定の推論プロファイルでモデルをInvokeすること。
- 推論プロファイルでルーティングされる可能性があるモデルでInvokeすること。このとき、指定の推論プロファイルを使っていること。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GrantGeoCrisInferenceProfileAccess",
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": [
"arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:inference-profile/us.anthropic.claude-sonnet-4-5-20250929-v1:0"
]
},
{
"Sid": "GrantGeoCrisModelAccess",
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": [
"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0",
"arn:aws:bedrock:us-east-2::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0",
"arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0"
],
"Condition": {
"StringEquals": {
"bedrock:InferenceProfileArn": "arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:inference-profile/us.anthropic.claude-sonnet-4-5-20250929-v1:0"
}
}
}
]
}
※上記ガイドより引用
推論プロファイルでどのAWSリージョンが送信先になりうるかは使用する推論プロファイルから確認できました。
以下は国内のClaude 4.5 Sonnetモデル向けの推論プロファイルです。

また、以下のようにaws bedrock get-inference-profileコマンドではどのモデルを使うかARNで確認が可能でした。
aws bedrock get-inference-profile \
--region ap-northeast-1 \
--inference-profile-identifier "jp.anthropic.claude-sonnet-4-5-20250929-v1:0" \
--output json
{
"inferenceProfileName": "JP Anthropic Claude Sonnet 4.5",
"description": "Routes requests to Claude Sonnet 4.5 in ap-northeast-3, ap-northeast-1.",
"createdAt": "2025-09-27T02:18:20.378000+00:00",
"updatedAt": "2025-09-28T06:44:23.623000+00:00",
"inferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:<ACCOUNT_ID>:inference-profile/jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
"models": [
{
"modelArn": "arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0"
},
{
"modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0"
}
],
"inferenceProfileId": "jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
"status": "ACTIVE",
"type": "SYSTEM_DEFINED"
}
よって、Claude 4.5 Sonnetを日本国内だけで実行する場合は、推論プロファイルを実行するロールに以下のようなポリシーを設定すればよいと考えられます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowInvokeJPClaudeSonnet45InferenceProfile",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": [
"arn:aws:bedrock:ap-northeast-1:<ACCOUNT_ID>:inference-profile/jp.anthropic.claude-sonnet-4-5-20250929-v1:0"
]
},
{
"Sid": "AllowClaudeSonnet45FoundationModelsOnlyViaJPProfile",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": [
"arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0",
"arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0"
],
"Condition": {
"StringEquals": {
"bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:<ACCOUNT_ID>:inference-profile/jp.anthropic.claude-sonnet-4-5-20250929-v1:0"
}
}
}
]
}
ポリシーを設定したIAMロールで推論をしてみる
0.IAMロールの準備
上記のポリシーをアタッチしたIAMロールを作成し、スイッチロールしてAWS CLIからClaude 4.5 Sonnetでの推論が可能か確認しました。
このとき、簡単にCLIコマンドが実行できる環境は欲しかったので、Cloud Shellが使えるようにAWSCloudShellFullAccessポリシーもアタッチしました。
1.日本国内の推論プロファイルを指定する場合
まずはIAMポリシーで許可した日本国内向けの推論プロファイルを指定してモデルを実行してみました。
以下のコマンドを実行しました。
aws bedrock-runtime converse \
--region ap-northeast-1 \
--model-id "jp.anthropic.claude-sonnet-4-5-20250929-v1:0" \
--messages '[
{
"role": "user",
"content": [
{
"text": "日本語で一言だけ自己紹介してください。"
}
]
}
]' \
--inference-config '{
"maxTokens": 200,
"temperature": 0.2
}'
以下のように回答が生成できました。

2.日本国外の推論プロファイルを指定する場合
続いて、グローバルのモデルを使用するプロファイルを指定してみました。
aws bedrock-runtime converse \
--region ap-northeast-1 \
--model-id "global.anthropic.claude-sonnet-4-5-20250929-v1:0" \
--messages '[
{
"role": "user",
"content": [
{
"text": "日本語で一言だけ自己紹介してください。"
}
]
}
]' \
--inference-config '{
"maxTokens": 200,
"temperature": 0.2
}'
以下のようにエラーが発生し、推論実行できないことを確認しました。

aws: [ERROR]: An error occurred (AccessDeniedException) when calling the Converse operation: User: arn:aws:sts::<ACCOUNT_ID>:assumed-role/AllowInvokeJPClaudeSonnet45InferenceProfileRole/cm-suzuki.nayuta is not authorized to perform: bedrock:InvokeModel on resource: arn:aws:bedrock:ap-northeast-1:<ACCOUNT_ID>:inference-profile/global.anthropic.claude-sonnet-4-5-20250929-v1:0 because no identity-based policy allows the bedrock:InvokeModel action
3.日本国内の推論プロファイルを指定するが、モデルへの許可がない場合
IAMポリシー内でモデルのInvokeを許可する必要があったため、漏れていた場合にどうなるのかも確認しました。
以下のようにポリシーを変更しておきました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowInvokeJPClaudeSonnet45InferenceProfile",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": [
"arn:aws:bedrock:ap-northeast-1:<ACCOUNT_ID>:inference-profile/jp.anthropic.claude-sonnet-4-5-20250929-v1:0"
]
}
]
}
この状態で推論を実行すると以下のようにモデルを実行する権限がないエラーが発生し、ルーティングされた先のモデルの実行権限も必要なことが分かります。

aws: [ERROR]: An error occurred (AccessDeniedException) when calling the Converse operation: User: arn:aws:sts::<ACCOUNT_ID>:assumed-role/AllowInvokeJPClaudeSonnet45InferenceProfileRole/cm-suzuki.nayuta is not authorized to perform: bedrock:InvokeModel on resource: arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0 because no identity-based policy allows the bedrock:InvokeModel action
なお、Models at a glance - Claude Sonnet 4.5を確認すると、Claude Sonnet 4.5はGeoまたはGlobalでしか利用できないため、直接個別リージョンのモデルを指定して実行はできなさそうです。
また、同じページから各モデルがどのようなGeo inferenceが可能かも整理してあるため参考になります。
最後に
Claudeモデルでのデータ処理時に、データの所在地を日本国内に限定するために推論プロファイルが利用できますが、誤って異なる推論プロファイルを使わないよう制限するIAMポリシー設定についてご紹介しました。
ここまでの検証ではドキュメントを参考にClaude 4.5 Sonnetを使っていますが、JP Anthropic Claude Opus 4.8などより新しいモデル向けの推論プロファイルも公開されているため、推論時のデータレジデンシー要件がある方はぜひご確認ください。









