技術ブログ

Amazon Bedrock 経由で Claude Code を導入する

目的

Claude Code(CLI)を Amazon Bedrock 経由で利用できるようにし、ローカル開発ディレクトリ(例: ~/<PROJECT_DIR>)での調査・実装支援に使える状態にする。

  • 認証は AWS Access Key(aws configure)
  • モデルは Claude Sonnet 4.5
  • リージョンは 東京(ap-northeast-1)

前提

  • macOS(Intel/Apple Siliconどちらでも可)
  • AWS アカウントで Bedrock が利用可能(※利用権限・モデルアクセスが必要)
  • Access Key / Secret Key を発行できる権限がある
  • Homebrew をインストール済み(未導入なら後述)

全体像(やること)

  1. Homebrew を入れる(未導入なら)
  2. AWS CLI を入れる
  3. aws configure --profile <AWS_PROFILE> で認証情報を設定
  4. Bedrock で Sonnet 4.5 が呼べることを CLI で確認
  5. Claude Code(claude)を入れる
  6. Bedrock 利用のための環境変数を設定(direnvなしのため 都度 or シェルに固定
  7. claude を起動して動作確認

手順

1) Homebrew(未導入の場合)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

PATHが通っていない場合は Homebrew の案内に従い ~/.zprofile などに追記する。

2) AWS CLI をインストール

brew install awscli
aws --version

3) AWS認証情報(Access Key)を設定する

今回は <AWS_PROFILE> というプロファイル名で登録する(例: dev / stg / prd / work など)。

aws configure --profile <AWS_PROFILE>;

入力内容

  • AWS Access Key ID:払い出された Access Key ID(例: AKIA...
  • AWS Secret Access Key:払い出された Secret Access Key(例: xxxx...
  • Default region nameap-northeast-1
  • Default output formatjson

設定できたか確認:

aws sts get-caller-identity --profile <AWS_PROFILE>;

想定出力(例):

{
  "UserId": "...",
  "Account": "123456789012",
  "Arn": "arn:aws:iam::123456789012:user/xxxxx"
}

注意:Access Key / Secret Key はブログやログに貼らない。ターミナル共有・スクショにも映さない。

4) Bedrock で Sonnet 4.5 が利用できるか確認

まず Bedrock のモデル一覧を確認(東京リージョン):

aws bedrock list-foundation-models \
  --region ap-northeast-1 \
  --query "modelSummaries[?providerName=='Anthropic'].[modelId,modelName]" \
  --output table

Bedrock は 推論プロファイル(Inference Profile) を使うケースがあるので、次も確認:

aws bedrock list-inference-profiles \
  --region ap-northeast-1 \
  --type-equals SYSTEM_DEFINED \
  --query "inferenceProfileSummaries[?contains(inferenceProfileId, 'sonnet-4-5')].[inferenceProfileId,status]" \
  --output table

ここで ACTIVESonnet 4.5 が出ていればOK。

例(環境によりIDは異なる):

  • jp.anthropic.claude-sonnet-4-5-YYYYMMDD-v1:0(東京向け)
  • global.anthropic.claude-sonnet-4-5-...(グローバル)

5) Claude Code(CLI)をインストール

brew install claude
claude --version

もし env: node: No such file or directory が出る場合:

brew install node
node -v

6) Bedrock 利用の環境変数を設定(direnvなし)

最低限これを設定すると、claude が Bedrock を使う前提になる。

export AWS_PROFILE=<AWS_PROFILE>;
export AWS_REGION=ap-northeast-1
export AWS_DEFAULT_REGION=ap-northeast-1
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_PAGER=""

Sonnet 4.5 を明示して使いたい場合(推奨)

環境によってはモデル指定が必要になることがあるため、使える推論プロファイルIDを指定する。

export ANTHROPIC_MODEL="jp.anthropic.claude-sonnet-4-5-YYYYMMDD-v1:0"

コツ:手順4で出た ACTIVE の Sonnet 4.5 を使う。
補足:The provided model identifier is invalid. が出るときは、モデルIDが違う/末尾に空白がある/リージョンと不整合、が多い。

7) Bedrock Runtime を CLI で疎通確認(任意だが強く推奨)

Claude Codeに入る前に、Bedrock Runtime が呼べるか確認する。

MODEL_ID="jp.anthropic.claude-sonnet-4-5-YYYYMMDD-v1:0"

aws bedrock-runtime converse \
  --region ap-northeast-1 \
  --model-id "$MODEL_ID" \
  --messages '[{"role":"user","content":[{"text":"接続テスト。1行で返答して"}]}]' \
  --output json

レスポンスが返れば Bedrock 側はOK。

8) Claude Code を起動して確認

claude

起動後に /status で確認:

  • API provider: AWS Bedrock
  • AWS region: ap-northeast-1
  • Model: (Sonnet 4.5 のID)

よくあるトラブルシュート

A. Unable to locate credentials

原因:AWS_PROFILE が未設定、または aws configure が未実施。

対処:

export AWS_PROFILE=<AWS_PROFILE>;
aws sts get-caller-identity

B. The provided model identifier is invalid

原因:

  • model-id が存在しない / 権限がない
  • 推論プロファイルIDを使うべき環境で foundation model ID を指定している
  • 末尾に 空白 が入っている(地味に多い)

対処:

  1. 推論プロファイルを確認
    aws bedrock list-inference-profiles --region ap-northeast-1 --type-equals SYSTEM_DEFINED \
    --query "inferenceProfileSummaries[?contains(inferenceProfileId, 'sonnet-4-5')].[inferenceProfileId,status]" \
    --output table
  2. 表示された ACTIVE のIDを MODEL_ID にセットし直す

C. env: node: No such file or directory

原因:Claude Code 実行に Node が必要な環境。

対処:

brew install node
node -v

D. /login を要求される / “Invalid API key”

原因:

  • Bedrock設定が効いていない(CLAUDE_CODE_USE_BEDROCK=1 などが未設定)
  • (VS Code経由などで)Claude.ai/Console の導線を踏んでいる

対処(CLIの場合):まずターミナルで環境変数を設定してから起動

AWS_PROFILE=<AWS_PROFILE>; AWS_REGION=ap-northeast-1 AWS_DEFAULT_REGION=ap-northeast-1 CLAUDE_CODE_USE_BEDROCK=1 AWS_PAGER="" \
ANTHROPIC_MODEL="jp.anthropic.claude-sonnet-4-5-YYYYMMDD-v1:0" \
claude

運用メモ(direnvなしの場合)

direnvを使わない場合、環境変数の入れ忘れが事故原因になりやすい。(筆者はdirenvで管理している)

おすすめはどちらか:

方式1:毎回ワンライナーで起動(安全・壊れにくい)

AWS_PROFILE=<AWS_PROFILE>; AWS_REGION=ap-northeast-1 AWS_DEFAULT_REGION=ap-northeast-1 CLAUDE_CODE_USE_BEDROCK=1 AWS_PAGER="" \
ANTHROPIC_MODEL="jp.anthropic.claude-sonnet-4-5-YYYYMMDD-v1:0" \
claude

方式2:~/.zshrc に固定(楽だが“常にこのAWSプロファイルになる”)

  • 端末で「基本プロファイル固定」で良いなら .zshrc でもOK
  • ただし他環境調査で AWS_PROFILE を切り替えると混乱しやすいので注意

ポイント:Access Key/Secret Keyは .zshrc に書かない(~/.aws/credentials へ保存されるのが正道)

まとめ

  • Bedrock経由のClaude Codeは AWS認証(Access Key)+ 環境変数で動く
  • モデル指定は Sonnet 4.5 の推論プロファイルIDを使うとハマりにくい

ここまで読んでいただき、ありがとうございます。もしこの記事の技術や考え方に少しでも興味を持っていただけたら、ネクストのエンジニアと気軽に話してみませんか。

  • 選考ではありません
  • 履歴書不要
  • 技術の話が中心
  • 所要時間30分程度
  • オンラインOK

エンジニアと話してみる