BedrockでClaude Codeを動かすための環境変数と設定フロー

Claude CodeをAmazon Bedrock経由で動かす最短ルートは、Anthropicの公式ドキュメントで案内されているとおり、環境変数「CLAUDE_CODE_USE_BEDROCK」を1にし、対象リージョンとAWS認証情報を渡す構成です。AnthropicのAPIキーは不要で、既存のAWS権限にそのまま乗せられます。設定の順番は、(1)Bedrockコンソールでモデルアクセスを有効化、(2)環境変数でBedrock利用とリージョンを指定、(3)AWS認証情報を通す、の三段階で考えると迷いません。本体が未導入なら、先にOS別のインストール手順を済ませておきましょう。
Bedrock利用を有効化する環境変数とリージョンの指定
起点となるのはこの二つです(AWS_REGIONは、使用するAWSプロファイル側にリージョン設定があれば省略できます)。
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1 # プロファイルにリージョン設定があれば省略可
解決されるリージョンは、BedrockコンソールでClaudeモデルを有効化したリージョンと必ず一致させます。ここがずれていると、認証が通っていてもモデルが見つからず応答が返りません。
公式ドキュメントで案内されている構成では、モデルを固定したいなら「ANTHROPIC_MODEL」に、バックグラウンド処理用の軽量モデルを指定したいなら「ANTHROPIC_DEFAULT_HAIKU_MODEL」にBedrockのモデルID(推論プロファイルID)を渡します(旧「ANTHROPIC_SMALL_FAST_MODEL」は非推奨になりました)。これらを指定しない場合は既定モデルにフォールバックする挙動が案内されているため、意図しないモデルで課金される取り違えが起きやすい点に注意してください。案件ごとに使うモデルが決まっているなら、明示指定を標準運用にしておくと事故を防げます。
AWS認証情報を読み込ませる設定パターン
AWSの公式仕様に沿って、認証はAWS SDKの標準的な認証情報チェーンに委ねられます。普段のawsコマンドが通る環境なら、ほぼそのまま動きます。
具体的には、AWSの標準的な認証方法として「AWS_PROFILE」で名前付きプロファイルを指すか、EC2・CloudShell上のIAMロール、SSOの一時クレデンシャルをそのまま利用できます。長期アクセスキーを環境変数に直書きしても動きはしますが、複数案件を並行する現場ではキーの取り違えやリポジトリへのコミット事故の温床になりがちです。チーム運用なら、aws sso loginで発行する一時クレデンシャルか、プロファイル切り替えを勧めます。
逆に個人利用でとにかく早く動かしたいなら、フルのAWS認証情報を設定せずに済む最短経路として、BedrockコンソールでAPIキーを発行してAWS_BEARER_TOKEN_BEDROCKに渡す方法があります。
export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key
いずれの場合も、Bedrock側の権限設計として、IAMポリシーにbedrock:InvokeModel・bedrock:InvokeModelWithResponseStream・bedrock:ListInferenceProfiles・bedrock:GetInferenceProfileの4つの許可が必要になります(公式ドキュメントのポリシー例と同じ構成)。ストリーミング応答を使うClaude Codeでは2つ目が欠けると途中で失敗し、推論プロファイルIDで指定する本記事の構成では後半2つが欠けると解決に失敗したり余計なリトライが発生します。
接続できない・応答が返らないときの原因切り分けと動作確認
設定したのに応答が返らないときは、Claude Code側よりBedrock側の権限とモデル指定を先に疑うと早く着地します。権限が先、設定は後です。
モデルアクセス許可とモデルID指定の不一致でつまずくケース
最も多いのは、Bedrockコンソールでそのモデルへのアクセスを有効化していないケースです。AccessDeniedExceptionが返り、リージョンを合わせても解消しません。コンソールのモデルアクセス画面で対象モデルが「アクセスが付与されました」になっているか確認します。
次に多いのがモデルIDの指定ミスです。オンデマンド非対応のIDを渡した場合、Bedrock側から「Invocation of model ID … with on-demand throughput isn’t supported. Retry … with an inference profile」といった趣旨のエラーが返ることがあります。このときは「us.」などのプレフィックス付き推論プロファイルIDに直すと解決するケースが多く、ANTHROPIC_MODELに素のモデルIDを入れているときに起きやすいので、推論プロファイルIDで指定し直してください。
動作確認は対話に入る前に、最小プロンプトで切り分けると判断しやすくなります。
claude -p 'ping'
応答テキストが1行返れば、環境変数・認証・モデルアクセスの三点が揃った目安になります。エラーが出たら、本文がAccessDenied系かモデルID系かを見れば、上のどちらを直すべきか即座に判断できます。前者ならコンソールのモデルアクセス、後者なら環境変数のモデルID指定に戻る、と切り分けの起点を固定しておくと復旧が速くなります。
EC-CUBE公式パートナー