この投稿はプライム・ブレインズ Advent Calendar 2025 の22日目の記事です。
こんにちは。@masatomixです。
最近、仕事で Claude Codeを積極的に活用していますが、仕事の内容によってAnthropic直接ではなく Amazon Bedrockを使う必要があったりで、接続先を機動的に切り替えたいときがあります。
ちなみに、Claude Codeの接続先をBedrockにするには、環境変数で切り替えることができます。
$ export CLAUDE_CODE_USE_BEDROCK=1
$ export ANTHROPIC_MODEL=jp.anthropic.claude-sonnet-4-5-20250929-v1:0
$ export AWS_REGION=ap-northeast-1
$ export AWS_PROFILE=foo-profile
$ claude
参考:Claude Code から Amazon Bedrock を利用する
ProやMaxライセンスを購入する前に少しだけClaude Codeを触ってみたい、なんて時にもつかえそうですね。
課題
ただし環境変数はシェル全体に適用されるため、元のClaudeに戻すにはシェル再起動か下記のように環境変数のunsetが必要で、多少メンドクサイんですよね。
$ unset CLAUDE_CODE_USE_BEDROCK
$ unset ANTHROPIC_MODEL
$ unset AWS_REGION
$ unset AWS_PROFILE
もしくは
$ unset CLAUDE_CODE_USE_BEDROCK ANTHROPIC_MODEL AWS_REGION AWS_PROFILE
解決策:子シェルで一時的に環境変数を適用
というわけで解決策ですが、.bashrc など起動時に読み込まれるファイルに以下の関数を追加します。
claude_bedrock() {
(
export CLAUDE_CODE_USE_BEDROCK=1
export ANTHROPIC_MODEL=jp.anthropic.claude-sonnet-4-5-20250929-v1:0
export AWS_REGION=ap-northeast-1
export AWS_PROFILE=foo-profile
claude "$@"
)
}
ポイントは関数内を () で囲むこと。これにより子シェルで実行され、環境変数が親シェルに影響しません。
使うときは
$ claude_bedrock # → Bedrock経由で起動
$ claude # → 通常のAnthropic直接接続
これで claude_bedrock と claude を使い分けることで、Bedrock経由での起動と通常のAnthropic接続を切り替えることができます。
一応疎通確認
一応やってみた。
$ tail ~/.bashrc
claude_bedrock() {
(
export CLAUDE_CODE_USE_BEDROCK=1
export ANTHROPIC_MODEL=jp.anthropic.claude-sonnet-4-5-20250929-v1:0
export AWS_REGION=ap-northeast-1
export AWS_PROFILE=foo-profile
claude "$@"
)
}
$ claude_bedrock
* ▐▛███▜▌ * Claude Code v2.0.72
* ▝▜█████▛▘ * jp.anthropic.claude-sonnet-4-5-20250929-v1:0 · API Usage Billing
* ▘▘ ▝▝ * ~/git/my-task
/model to try Opus 4.5. Note: you may need to request access from your cloud provider
> /exit
⎿ Bye!
$ claude
* ▐▛███▜▌ * Claude Code v2.0.72
* ▝▜█████▛▘ * Opus 4.5 · Claude Max
* ▘▘ ▝▝ * ~/git/my-task
> /exit
⎿ Catch you later!
$
うまくいきました!おつかれさまでした。