日本国内だけでAmazon BedrockのClaudeモデル実行を許可するIAMロールを試してみた

日本国内だけでAmazon BedrockのClaudeモデル実行を許可するIAMロールを試してみた

Amazon BedrockのClaudeモデルで日本国内クロスリージョン推論を使う際、IAMポリシーで推論プロファイルを限定し、誤ったリージョンでの実行を防ぐ方法をご紹介します。
2026.06.04

データ事業本部の鈴木です。

昨年10月から、日本国内クロスリージョン推論機能がリリースされ、Claudeの一部モデルで日本国内に閉じた推論が可能になっています。
以下のような資料で紹介されています。

https://aws.amazon.com/jp/blogs/news/amazon-bedrock-now-supports-japan-cross-region-inference/
https://dev.classmethod.jp/articles/bedrock-application-inference-profile-region-control/
https://dev.classmethod.jp/articles/bedrock-supported-regions/

基本的には、日本国内クロスリージョン推論向けのシステム推論プロファイルを使って推論をすればよいのですが、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
  }'

以下のようにエラーが発生し、推論実行できないことを確認しました。

推論結果-失敗するケース1

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"
            ]
        }
    ]
}

この状態で推論を実行すると以下のようにモデルを実行する権限がないエラーが発生し、ルーティングされた先のモデルの実行権限も必要なことが分かります。

推論結果-失敗するケース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-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などより新しいモデル向けの推論プロファイルも公開されているため、推論時のデータレジデンシー要件がある方はぜひご確認ください。


生成AI活用はクラスメソッドにお任せ

過去に支援してきた生成AIの支援実績100+を元にホワイトペーパーを作成しました。御社が抱えている課題のうち、どれが解決できて、どのようなサービスが受けられるのか?4つのフェーズに分けてまとめています。どうぞお気軽にご覧ください。

生成AI資料イメージ

無料でダウンロードする

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事