Claude Code Bedrock IAM設定とクロスリージョン推論プロファイルの組み方
Claude CodeをAmazon Bedrockで使うためのIAMポリシーと、クロスリージョン推論プロファイルのプレフィックス制御を手順で確認します。
Claude CodeがBedrockで求めるIAM権限
Claude CodeをAmazon Bedrock経由で使うとき、料金や認証方式より先につまずくのがIAM権限です。/setup-bedrockウィザードや環境変数で接続先を設定しても、IAMポリシーが足りなければモデル呼び出しそのものが失敗します。
Claude Codeが実行時に呼ぶAPIは主に4つです。モデルを直接呼ぶbedrock:InvokeModelとbedrock:InvokeModelWithResponseStream、推論プロファイルを解決するbedrock:ListInferenceProfilesとbedrock:GetInferenceProfile。特に後半の2つは見落とされがちです。クロスリージョン推論プロファイルを使う構成では、プロファイル一覧を取得できるかどうかで可用性チェックの有無が変わり、取得できない場合は可用性を確認せずプレフィックスをそのまま適用します(詳しくは後述)。
IAMポリシーの最小構成
公式が示す最小ポリシーは次の形です。モデル呼び出しと推論プロファイル解決に加えて、Anthropicモデルの初回利用に必要なMarketplace購読アクション(aws-marketplace:ViewSubscriptions・aws-marketplace:Subscribe)も最小ポリシーに含まれます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowModelAndInferenceProfileAccess",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream",
"bedrock:ListInferenceProfiles",
"bedrock:GetInferenceProfile"
],
"Resource": [
"arn:aws:bedrock:*:*:inference-profile/*",
"arn:aws:bedrock:*:*:application-inference-profile/*",
"arn:aws:bedrock:*:*:foundation-model/*"
]
},
{
"Sid": "AllowMarketplaceSubscription",
"Effect": "Allow",
"Action": [
"aws-marketplace:ViewSubscriptions",
"aws-marketplace:Subscribe"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:CalledViaLast": "bedrock.amazonaws.com"
}
}
}
]
}Resourceはワイルドカードで書かれていますが、社内ポリシーで絞りたい場合は特定の推論プロファイルARNだけに限定しても動きます。AWS Organizationsを使っているなら、管理アカウントからPutUseCaseForModelAccess APIを1回呼ぶだけで、子アカウントへのモデル利用許諾が自動的に広がります。この呼び出しにはbedrock:PutUseCaseForModelAccess権限が要ります。
Resourceを絞り込む例は次のようになります。使わせたいモデルのプロファイルARNだけを列挙する形です。
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream",
"bedrock:ListInferenceProfiles",
"bedrock:GetInferenceProfile"
],
"Resource": [
"arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-opus-5",
"arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-sonnet-4-6"
]
}bedrock:GetInferenceProfileは、アプリケーション推論プロファイルARNをその裏側にある基盤モデルへ解決するために使われます。この解決結果でリクエスト形式(モデルごとのAPIの呼び出し方)を選んでいるため、単なる付随権限ではなく解決経路そのものに関わります。
bedrock:GetInferenceProfileを外すとどうなるか。この権限が無くても致命的なエラーにはなりません。Claude Codeはリクエスト形式を自動で切り替えて1回リトライし、結果的にリクエストは成功します。ただし新しいモデルに切り替えるたびに往復が1回増えます。AWS_BEARER_TOKEN_BEDROCKでAPIキー認証を使う構成は、フルのIAMロールよりポリシーが狭く絞られがちなので、このリトライに気づかず放置されている例をよく見ます。
専用のAWSアカウントをClaude Code用に切り分けておくと、コスト追跡とアクセス制御の両方が扱いやすくなります。Bedrock経由の料金が直接APIとどう違うかは請求区分を決める前に確認しておくと後戻りが減ります。
クロスリージョン推論プロファイルの仕組み
BedrockのInvoke APIを使うとき、Claude Codeは組み込みのデフォルトモデルをクロスリージョン推論プロファイルIDに解決します。プロファイルIDにはリージョン系統を示すプレフィックスが付き、Claude Codeが解決先のAWSリージョンごとに優先するプレフィックスは次の通りです。
プレフィックスの元になる「解決先のAWSリージョン」自体は、AWS_REGION→AWS_DEFAULT_REGION→アクティブなAWSプロファイルのregion(認証情報ファイル→設定ファイルの順)→us-east-1の順で決まります。いずれかの値がリージョン名の形をしていない場合はその値を無視し、次の順位に進みます。想定と違うプレフィックスが選ばれているときは、/statusで解決済みリージョンとその出所を確認できます。
| AWSリージョン | プレフィックス |
|---|---|
us-gov-*(AWS GovCloud) | プレフィックスus-gov. |
us-* | プレフィックスus. |
eu-* | プレフィックスeu. |
ap-* | プレフィックスapac. |
| それ以外 | プレフィックスglobal. |
プレフィックスは「優先」であって強制ではありません。Claude Codeがアカウント内のプロファイル一覧を取得できる場合、①優先プレフィックス付きのプロファイル→②プレフィックスが一致しなくてもモデルに一致するプロファイル→③一致するプロファイルが無ければ優先プレフィックス付きの組み込みモデルID、の順で解決します。逆にプロファイル一覧の取得ができない構成(前段のIAM権限が欠けている場合を含む)では、可用性を確認せずプレフィックスをそのまま適用します。該当リージョンにそのプレフィックスのプロファイルが有効化されていないと、リクエストは400エラーで失敗します。
リージョンプレフィックスを環境変数で切り替える
組み込みのデフォルトモデルは変えず、優先プレフィックスだけ変更したい場合はANTHROPIC_BEDROCK_REGION_PREFIXを設定します。v2.1.224以降で利用でき、有効な値はus / eu / apac / jp / au / globalの6つです。
export ANTHROPIC_BEDROCK_REGION_PREFIX=global
# us-*リージョンでも、プライマリモデルは
# us.anthropic.claude-opus-5 ではなく
# global.anthropic.claude-opus-5 に解決されるアカウントにglobal.プロファイルだけを有効化していて、Claude Codeがリージョンから導出する地理系プレフィックスと噛み合わないときに使う設定です。無効な値を指定するとリージョン由来の優先プレフィックスへ静かにフォールバックし、AWS GovCloudリージョンでは変数の値にかかわらず常にus-gov.が使われます。自分でARNやプロファイルIDを直接指定した場合、Claude Codeはそれを書き換えません。
モデルバージョンを推論プロファイルへ固定する
複数ユーザーへの展開では、モデルバージョンをピン留めしないとopusやsonnetのエイリアスがClaude Codeの組み込みデフォルトに解決され、アカウントでまだ有効化されていないモデルに当たって起動時フォールバックが起きます。ピン留めは次の3変数で行います。
export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-8'
export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'このIDはus.のクロスリージョン推論プロファイルプレフィックスを使っています。別リージョン系統や、組織専用のアプリケーション推論プロファイルを使う場合はプレフィックスやARNをそこに合わせます。
同じモデルファミリーの複数バージョンを/modelピッカーに並べ、それぞれ別のアプリケーション推論プロファイルARNへ振り分けたい場合は、ANTHROPIC_DEFAULT_*_MODELではなく設定ファイルのmodelOverridesを使います。
{
"modelOverrides": {
"claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",
"claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",
"claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod"
}
}ユーザーが/modelでいずれかのバージョンを選ぶと、Claude Codeはこのマッピング先のARNでBedrockを呼びます。オーバーライドが無いバージョンは、組み込みのBedrockモデルIDか起動時に見つかった一致プロファイルにフォールバックします。
ただしアプリケーション推論プロファイルARNを指すピンは、次節のピン更新提案の対象外です。管理者が管理するARNのため、更新提案をスキップします。
起動時にモデルの可用性をどう確認しているか
Claude CodeはBedrock接続時、起動のたびに使用予定のモデルがアカウントで呼び出せるかを検証します。ピン留めしたモデルバージョンより新しいバージョンがアカウントで呼び出せる場合、ピンの更新を提案します。承諾すると新しいモデルIDがユーザー設定ファイルに書き込まれ、Claude Codeが再起動します。拒否した場合、次にデフォルトバージョンが変わるまで同じ提案は繰り返されません。
ピン留めしていない状態でデフォルトモデルがアカウントで使えない場合は、そのセッション限定でフォールバックが働きます。まず旧バージョンを試し、Opusモデルが1つも使えなければデフォルトのSonnetモデルに切り替わります。このフォールバックはセッションをまたいで保存されないため、常に同じバージョンで動かしたいなら該当モデルをアカウントで有効化するか、明示的にピン留めして固定します。
この可用性チェックも、プロファイル一覧を取得できるかどうかで解決経路が変わる点は前段のクロスリージョン推論プロファイルの解決ロジックと同じです。IAM権限が欠けていると、ピン更新の提案やフォールバックの精度が落ちます。
--modelやANTHROPIC_MODELでセッションごとに特定のSonnet/Opusバージョンを指定した場合は扱いが変わります。その指定が該当エイリアスのセッション内ピンとして働き、置き換えた組み込みデフォルトの可用性チェック自体をスキップして、フォールバック通知なしにそのモデルで起動します。逆にopusのようなエイリアスや、Claude Codeが認識しないモデルID(アプリケーション推論プロファイルARNなど)はピンとして扱われません。
Guardrailsを併用するときの1点
Bedrock Guardrailsでコンテンツフィルタリングを組んでいる環境では、クロスリージョン推論プロファイルを使う設定に合わせてGuardrail側でも「Cross-Region inference」を有効にする必要があります。Guardrail側の設定が追いついていないと、モデル呼び出しは通ってもGuardrailのフィルタリングだけが機能しない状態になり、原因の切り分けに時間がかかります。
よくあるつまずき
ListInferenceProfilesだけ付け忘れる:InvokeModel系だけ許可してプロファイル系を外すと、Claude Codeはプロファイル一覧を取得できず可用性チェックなしでプレフィックスを適用する経路に落ちる。該当プロファイルが無い場合は400エラーになる- リージョンとSSOのリージョンを混同する:
sso_regionとBedrockを呼ぶリージョンは別物。IAM Identity Centerのインスタンスが別リージョンにある場合、Bedrock側のリージョン設定がsso_regionを上書きしてしまうと認証エラーになる(v2.1.207で修正済み) ANTHROPIC_BEDROCK_REGION_PREFIXに無効な値を渡す:us/eu/apac/jp/au/global以外の文字列を入れても即座にエラーにはならず、リージョン由来の優先プレフィックスへ静かにフォールバックする。意図した振り分けになっているかは/statusで確認するmodelOverridesとピン留め変数を両方設定して混乱する: 単一のモデルファミリーを1つの推論プロファイルに固定するだけならANTHROPIC_DEFAULT_*_MODELで足りる。複数バージョンを併存させたい場合だけmodelOverridesに切り替える
まとめ
Claude CodeをBedrockでチーム展開するときのIAM設計は、モデル呼び出し権限だけでなくListInferenceProfiles・GetInferenceProfile・Marketplace購読の3点セットで揃えるのが要点です。クロスリージョン推論プロファイルは、リージョンから自動導出されるプレフィックスとANTHROPIC_BEDROCK_REGION_PREFIXによる手動指定の2系統があり、どちらもプロファイル一覧を取得できるIAM権限があって初めて可用性チェック付きで動きます。モデルのピン留めはANTHROPIC_DEFAULT_*_MODEL、複数バージョンの併存はmodelOverridesと、目的で使い分けます。