Claude Code を Amazon Bedrock 経由で使う環境を作る(WSL + aws-vault + 国内リージョン)

Claude Code を Amazon Bedrock 経由で使う環境を作る(WSL + aws-vault + 国内リージョン)

既に Claude Enterprise を使っていましたが、Bedrock 経由の Claude も同じ WSL 上で使いたかったので、切り替えられるようにセットアップしました!
2026.09.10

コーヒーが好きな emi です。

すでに Claude Enterprise 版の Claude Code を使っているのですが、これとは別に Amazon Bedrock 経由の Claude の挙動も確認したいので、同じ端末で両方を切り替えて使えるように環境を整えました。設定内容を記載します。

動作環境

Windows 上の WSL2(Ubuntu)で作業しました。各ツールのバージョンは以下です。

ツール バージョン
AWS CLI 2.28.2(Python 3.13.4 / Linux WSL2)
Node.js v22.16.0
Claude Code 2.1.248
aws-vault v7.2.0
バージョン確認コマンド
emiki@<hostname>:~/work/xx$ aws --version; node --version; claude --version; aws-vault --version
aws-cli/2.28.2 Python/3.13.4 Linux/6.18.33.2-microsoft-standard-WSL2 exe/x86_64.ubuntu.22
v22.16.0
2.1.248 (Claude Code)
v7.2.0
emiki@<hostname>:~/work/xx$ 

Node.js は Claude Code を動かすために入っています。

データが日本国内にとどまるようにする推論プロファイル

日本企業での利用を考えると、データは国内に留めたいという要望が多いです。

Bedrock で新しめの Claude モデルを呼ぶときは、モデルを単体で指定するのではなく「推論プロファイル」というものを選びます。
推論プロファイルはリクエストを複数リージョンに振り分けてスループットを確保する仕組みで、プロファイル ID の頭にどの範囲にルーティングするかを表すプレフィックスが付きます。プレフィックスが us. だと米国内、jp. だと日本国内にルーティングされます。
リクエストとデータがどのリージョンに流れるかは、どの推論プロファイルを選ぶかで決まります。

推論オプションは大きく 3 つに分かれます。

  • In-Region
    • リクエストを1つのリージョン内に留める
    • 厳格なコンプライアンス要件がある場合向け
  • 地理的なクロスリージョン
    • データレジデンシーを守りつつ、地域(米国・欧州・APAC など)内の複数リージョンにまたがってルーティングする
    • jp.(日本国内)や apac.(APAC 内)など
  • グローバルなクロスリージョン
    • レジデンシーの制約がない場合に、世界中のどこにでもルーティングする
    • global.

Opus 4.8 の場合、東京はすべての推論オプションが利用可能となっています。
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-8.html

各モデルでどの推論プロファイル(jp. / apac. / global. など)が使えるかはリージョンごとに異なるので、各モデルの詳細ページで確認してください。

今回はデータを国内に留めたいので、jp. で始まる推論プロファイルを調べます。

実行結果▼

emiki@<hostname>:~/work$ aws bedrock list-inference-profiles --region ap-northeast-1 --query "inferenceProfileSummaries[?starts_with(inferenceProfileId, 'jp.')].inferenceProfileId" --output table
--------------------------------------------------
|              ListInferenceProfiles             |
+------------------------------------------------+
|  jp.anthropic.claude-sonnet-4-5-20250929-v1:0  |
|  jp.anthropic.claude-haiku-4-5-20251001-v1:0   |
|  jp.amazon.nova-2-lite-v1:0                    |
|  jp.anthropic.claude-sonnet-4-6                |
|  jp.anthropic.claude-opus-4-7                  |
|  jp.anthropic.claude-opus-4-8                  |
+------------------------------------------------+
emiki@<hostname>:~/work$

現時点では、最新世代の Opus 5 / Sonnet 5 は jp. で使えないようです。

Bedrock 疎通確認

Claude Code の設定に進む前に、選んだモデルが応答するか、素の Bedrock を呼び出して確かめておきます。

実行結果▼

emiki@<hostname>:~/work$ aws bedrock-runtime invoke-model \
  --region ap-northeast-1 \
  --model-id "jp.anthropic.claude-sonnet-4-6" \
  --body '{"anthropic_version":"bedrock-2023-05-31","max_tokens":50,"messages":[{"role":"user","content":"こんにちは、ひとことで自己紹介して"}]}' \
  --cli-binary-format raw-in-base64-out \
  /tmp/bedrock-test.json && cat /tmp/bedrock-test.json
{
    "contentType": "application/json"
}
{"model":"claude-sonnet-4-6","id":"msg_bdrk_011CerzUcpWUedFA2UJcv7De","type":"message","role":"assistant","content":[{"type":"bash","bash":"こんにちは!私はAnthropic社が作ったAIアシスタントの**Claude**です。なんでもお気軽にどうぞ!😊"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":24,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":50}}
emiki@<hostname>:~/work$

content に日本語の返事が入っていました。これで jp.anthropic.claude-sonnet-4-6 が東京リージョンで応答することを確認できました。

Claude Code を Bedrock 版として起動する bashrc

Claude Code を Bedrock モードにするかどうかは、環境変数 CLAUDE_CODE_USE_BEDROCK で決まります。1 を設定して起動すると Bedrock 版、設定しなければ通常の Claude Enterprise 版のままです。これを使って、通常版はこれまで通り claude で、Bedrock 版は別のコマンド名で起動できるようにします。

私の環境ではクレデンシャルが aws-vault の中にあるので、起動時に aws-vault exec で一時クレデンシャルを発行し、その中で env を使って必要な環境変数を立てて claude を呼びます。~/.bashrc に次の関数を追記しました。

# 通常の Claude Enterprise 版は、そのまま `claude` で起動する(何も変更しない)。
# Bedrock 版は aws-vault サブシェルの外(素のシェル)から実行する。

# Bedrock 版(起動時の主力: Sonnet 4.6)
claude-bedrock() {
  aws-vault exec myprofile -- env \
    CLAUDE_CODE_USE_BEDROCK=1 \
    AWS_REGION=ap-northeast-1 \
    ANTHROPIC_MODEL='jp.anthropic.claude-sonnet-4-6' \
    ANTHROPIC_SMALL_FAST_MODEL='jp.anthropic.claude-haiku-4-5-20251001-v1:0' \
    claude "$@"
}
env と ~/.bashrc の補足

私が普段 Linux を頻繁に使わないので自分のための補足として書いておきます。

  • env コマンド

    • 「特定の環境変数を設定した状態で、その後ろのコマンドを実行する」ためのコマンド
    • env CLAUDE_CODE_USE_BEDROCK=1 AWS_REGION=... claude
      • CLAUDE_CODE_USE_BEDROCKAWS_REGION などを一時的にセットしたうえで claude を起動する」の意味
    • env で設定した環境変数はその claude の実行中だけ有効(普段のシェルには残らない)
  • ~/.bashrc

    • bash(Linux でよく使うシェル)を起動するたびに自動で読み込まれる設定ファイル
    • claude-bedrock() { ... } という関数を書いておくと、ターミナルで claude-bedrock と打つだけでこの中身が実行されるようになる
      • 毎回長いコマンドを打たずに済む
    • 書き足した後は、新しいターミナルを開くか source ~/.bashrc を実行すると反映される

ANTHROPIC_MODEL が Claude Code のメインモデルです。ANTHROPIC_SMALL_FAST_MODEL は Claude Code が裏で使う軽量モデルです。
jp. に固定して、国内で推論は完結するようにしています。

これで、通常の Claude Enterprise 版は claude、Bedrock 版は claude-bedrock と打つと起動できるようになります。

Bedrock 経由の Claude Code を起動する

claude-bedrock と打ちます。
すると MFA コードを聞かれるので入力します。無事に Claude Code が立ち上がりました。

claude-code-bedrock-jp-region_1

 ▐▛███▛█   Claude Code v2.1.248
▝▜██████▀  Sonnet 4.6 · Amazon Bedrock
  ▝▝ ▝▝    ~/work/xx

 Using flicker-free rendering · if you want to go back, use /tui default
    · Click to move your cursor in the bash input
    · Click to expand collapsed tool results
    · By default, bash auto-copies when you select it (/config to change)
    · Hold Shift while selecting to use your terminal's native copy instead

Amazon Bedrock と出ていて、モデルも設定した Sonnet 4.6 になっています。初回起動時は「新しいフルスクリーンレンダラーを試すか」という Claude Code 側の案内も出ましたが、これは表示方法の好みの話なので好きな方を選べば大丈夫です。

これで通常の Claude Enterprise 版は claude、東京リージョンの Bedrock 経由の Claude は claude-bedrock で切り替えて使えるようになりました!

/model の一覧を jp. 対応モデルだけに絞る

Bedrock 版でもモデル切り替えは /model で行います。
このまま /model でモデル一覧を出すと、以下のように推論プロファイルが jp. 以外のものも出てきます。

claude-code-bedrock-jp-region_2

Select model
Switch between Claude models. Your pick becomes the default for new sessions. For other/previous model names, specify with --model.

 1. Default                        Use the default model (currently Opus 4.8)
  1. jp.anthropic.claude-sonnet…  Custom Sonnet model
  2. Fable                          Fable 5 · Most capable for your hardest and longest-running tasks
  3. jp.anthropic.claude-opus-4-8   Custom Opus model
  4. Haiku                          Haiku 4.5 · Fastest for quick answers

 High effort (default) ←/→ to adjust

Enter to set as default · s to use this session only · Esc to cancel

私の検証環境は以下のリージョン制限で、東京・大阪・バージニア北部リージョン以外の使用を禁止しているので、jp. 以外のモデルを選択して使おうとすると 403 エラーになります。

https://classmethod.jp/news/251216-secure-account/

claude-code-bedrock-jp-region_3

このため /model の一覧に jp. 以外のモデルを出さないよう、~/.claude/settings.jsonavailableModels の設定を行います。

既存の settings.json の設定は変えず、以下の設定だけ足します。Opus は jp. で使えるもののうち最新の 4-8 だけを載せています。

{
  "availableModels": [
    "jp.anthropic.claude-sonnet-4-6",
    "jp.anthropic.claude-opus-4-8",
    "jp.anthropic.claude-haiku-4-5-20251001-v1:0"
  ]
}

Claude Code を起動し直して /model を開くと、jp. だけに絞られて以下のようになりました。

claude-code-bedrock-jp-region_6

Select model
Switch between Claude models. Your pick becomes the default for new sessions. For other/previous model names, specify with --model.

  1. Default                           Use the default model (currently Opus 4.8)
 2. jp.anthropic.claude-sonnet-4-6  Custom Sonnet model
  1. jp.anthropic.claude-opus-4-8       Custom Opus model
  2. Haiku                              Haiku 4.5 · Fastest for quick answers

 High effort (default) ←/→ to adjust

Enter to set as default · s to use this session only · Esc to cancel

Haiku だけ jp. のフル ID ではなく Haiku という汎用ラベルで表示されていますね。Haiku を選んで一言送ってみました。


 ▐▛███▛█   Claude Code v2.1.248
▝▜██████▀  Haiku 4.5 · Amazon Bedrock
  ▝▝ ▝▝    ~/work/xx

❯ /model
  ⎿  Set model to Haiku 4.5 and saved as your default for new sessions

❯ こんにちは~

  Thought for 4s

こんにちは。何かお手伝いできることはありますか?

✻ Cogitated for 4s · done 10:53 AM

返ってきました。表示は汎用ラベルですが、中身は jp. の Haiku が呼ばれています。

モデル切り替えでのエラー

おまけとして、jp. ではないモデルを選んだ場合のエラーと復旧方法も紹介しておきます。

/modelFable を選んでメッセージを送ってみました。TUI 上の表示は Fable 5 · Amazon Bedrock に変わりました。

 /model
  Set model to Fable 5 and saved as your default for new sessions

 こんにちは。

 403 {"Message":"User: arn:aws:sts::<AWS アカウント ID>:assumed-role/myprofile/17… · Retrying in 1s · attempt 5/10

403(アクセス拒否)です。Fable は jp. の一覧に無いモデルなので、東京リージョンの国内完結プロファイルでは呼べないことが分かりました。

/modeljp.anthropic.claude-sonnet-4-6 に戻すだけでは直りませんでした。403 になったリクエストがリトライを繰り返したまま残っていて、その間に追加で送ったメッセージもキューに溜まって、結局どれも返ってこない状態になりました。

claude-code-bedrock-jp-region_4

Esc を押してリトライ中のリクエストを中断すると直りました。
溜まっていたメッセージにも返信がドドドっときました。

claude-code-bedrock-jp-region_5

(笑)ってついてますね(笑)

問題点

availableModels を書いた ~/.claude/settings.json は、現状 Claude Code の設定ファイルとして通常の Claude Enterprise 版でも Bedrock 版でも共通で読まれています。
つまり Bedrock 版のために availableModelsjp. のモデルだけに絞ると、その絞り込みが通常の Claude Enterprise 版の /model 一覧にも反映されている状態です。

これを Enterprise 版と Bedrock 版で別々にするには settings.json を Enterprise 版と Bedrock 版で分ける方法を考える必要があります。
Claude Code は CLAUDE_CONFIG_DIR という環境変数で設定ディレクトリの場所を変えられるので、claude-bedrock 側だけ別のディレクトリを読ませれば、その中の settings.json も分けられるのではないかと考えています。
この方法は別記事で検証して書く予定です。

おわりに

WSL ターミナルの Claude Code を、Claude Enterprise と Claude on Bedrock で切り替えて使う方法を検証しました。切り替え自体は CLAUDE_CODE_USE_BEDROCK を設定するだけなので、Enterprise 版との共存はすぐに実現できました。
Bedrock 経由の Claude Code は初めていろいろ設定したので勉強になりました。

本記事への質問やご要望については画面下部の「DevelopersIOへのご意見」からお問い合わせいただけます。


Claudeならクラスメソッドにお任せください

クラスメソッドは、Anthropic社とリセラー契約を締結しています。各種製品ガイドから、業種別の活用法、フェーズごとのお悩み解決などサービス支援ページにまとめております。まずはご覧いただき、お気軽にご相談ください。

サービス詳細を見る

この記事をシェアする

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

関連記事