
はじめに
こんにちは。高橋 (ポインコ兄) です。
Claude Code を使っていて、こんな経験はありませんか?
❌ Error: Rate limit exceeded ❌ Error: Spend limit reached
API の Rate limits や Spend limits に引っかかって作業が止まってしまう …そんな時の解決策が Amazon Bedrock 経由への切り替え です。
基本的な Bedrock への切り替え方法などはこちらの当社ブログで詳しく解説していますが、本記事では更に...
- ✅ 切り替えをスキルで自動化してコマンド一発に
- ✅ ステータスバーで可視化してプロバイダーとコストを常時表示
この 2 つの実践的テクニックを解説します。
こんな人におすすめ
- ✅ Bedrock 経由への切り替えをコマンド一発でおこないたい
- ✅ JSON を手動で編集するのが面倒
- ✅ 現在のプロバイダーやコストを常時表示したい
- ✅ チームでスキルを共有したい
- はじめに
- なぜ Bedrock 経由に切り替えるのか?
- API と Amazon Bedrock の違い
- 料金は同じ?
- 基本的な切り替え方法
- 切り替えをスキルで自動化する
- ステータスバーでプロバイダーとコストを可視化する
- よくあるトラブルと対処法
- 参考資料
- あとがき
なぜ Bedrock 経由に切り替えるのか?
API 制限の壁
Anthropic API には以下の 2 種類の制限があり、大規模なリファクタリングやコードレビューなどで上限に達しやすいです。
Rate limits (レート制限) - 一定時間内に実行できる API リクエスト数やトークン数の上限
- Requests per minute (RPM): リクエスト数/分
- Input tokens per minute (ITPM): 入力トークン数/分
- Output tokens per minute (OTPM): 出力トークン数/分
Spend limits (支出上限) - 各カレンダー月に使用できる最大コスト (MAX プランの例)
- Tier 1: $100/月、Tier 2: $500/月、Tier 3: $1,000/月、Tier 4: $200,000/月
詳細は Anthropic API - Rate Limits を参照してください。
Amazon Bedrock のメリット
- API 制限を気にせず使える (従量課金制)
- ブラウザで簡単に認証 (
aws loginコマンド使用) - Cost Explorer でコストを一元管理
- Prompt Caching でコスト削減
詳細な料金比較や認証方法については、以下の公式ドキュメントを参照してください。
- Claude Code - Amazon Bedrock 設定ガイド - 認証・設定の詳細
- Amazon Bedrock 料金ページ - トークン単価とキャッシング料金
API と Amazon Bedrock の違い
Claude Code は内部的に接続先を切り替えるだけで、機能は完全に同じです。
| 項目 | Anthropic API | Amazon Bedrock |
|---|---|---|
| 認証 | API キー | aws login コマンド |
| モデル ID | claude-sonnet-4-6 |
us.anthropic.claude-sonnet-4-6 |
| Rate limits | リクエスト/トークン数の分単位制限 | AWS サービスクォータで管理 |
| Spend limits | 月次コスト上限あり (Tier制) | 従量課金 (上限なし) |
| MCP サーバー | すべて利用可能 | claude.ai 統合 MCP は不可 ⚠️ |
設定は環境変数で切り替えるだけです。
⚠️ MCP サーバーの制限について
Bedrock 経由を利用する場合、一部の MCP サーバーは利用できません。
- ❌ 利用不可: claude.ai のサードパーティ統合 MCP
- Slack、Gmail、Google Calendar、Atlassian、Box など
- これらは Anthropic API 経由でのみ動作します
- ✅ 利用可: ローカル MCP サーバー
- ファイルシステム、AWS、データベースなど
- API / Bedrock どちらでも動作します
詳細は Claude Code - MCP サーバー公式ガイド を参照してください。
料金は同じ?
基本的なトークン単価は API と Bedrock で同じです (Sonnet 4.6: 入力 $3/MTok、出力 $15/MTok)。
ただし、Bedrock には以下のメリットがあります。
- Prompt Caching: 同じコンテキストの再利用で 90% コスト削減 (自動適用)
- 従量課金: API のような月次上限なし
- Cost Explorer: AWS の他サービスと一元管理
詳細な料金については、以下の公式ドキュメントを参照してください。
- Amazon Bedrock 料金ページ — トークン単価
- Claude API - Prompt Caching — キャッシング仕様
基本的な切り替え方法
再掲ですが、Claude Code を Amazon Bedrock 経由に切り替える基本的な方法については、以下のブログで詳しく解説しています。
📚 参考記事:Claude Code CLI を Amazon Bedrock 経由で利用する
このブログでは以下を丁寧に説明しています。
- AWS 認証の設定方法
- IAM 権限の設定
- リージョン選択のポイント
.claude/settings.local.jsonの基本設定
基本的な切り替えができたら、次からが本題です。スキルで自動化し、ステータスバーで可視化する方法を解説します。
切り替えをスキルで自動化する
なぜスキル化が必要なのか?
プロジェクトごとに .claude/settings.local.json を手動で編集するのは、JSON 構文を誤るリスクがあったり、切り替えるたびにファイルを開く手間があります。
{ "env": { "CLAUDE_CODE_USE_BEDROCK": "1", "AWS_REGION": "us-east-1" } }
これをスキル化すれば、コマンド一発で切り替えられます。
Claude Code のスキルとは?
Claude Code のスキルは、/command-name の形式で呼び出せるカスタムコマンドです。
- Markdown ファイルで仕様を記述
- シェルスクリプトで実装
- プロジェクト固有 or グローバルで配置可能
詳細は Claude Code - スキル開発ガイド を参照してください。
実装例:/switch-provider スキルの作成
ステップ1: スキルディレクトリを作成
mkdir -p ~/.claude/skills/switch-provider
ステップ2: SKILL.md を作成
~/.claude/skills/switch-provider/SKILL.md:
--- name: switch-provider description: Switch between Anthropic API and Amazon Bedrock disable-model-invocation: true --- # Switch Provider Switch Claude Code's LLM provider between Anthropic API and Amazon Bedrock. ## Usage \`\`\`bash # Switch to Bedrock (default profile) /switch-provider bedrock # Switch to Bedrock (custom profile) /switch-provider bedrock bedrock-claude-code # Switch to Anthropic API /switch-provider api \`\`\` ## Current setting Provider is stored in `.claude/settings.local.json` in the current project. ## Available providers - **api**: Anthropic API (default) - **bedrock**: Amazon Bedrock When switching to Bedrock, ensure AWS credentials are configured and Bedrock models are enabled in AWS Console.
ステップ3: 切り替えスクリプトを作成
~/.claude/skills/switch-provider/scripts/switch.sh:
#!/bin/bash
set -e
provider="${1:-api}"
settings_file=".claude/settings.local.json"
# settings.local.json が存在しない場合は作成
if [ ! -f "$settings_file" ]; then
echo '{"env":{}}' > "$settings_file"
fi
case "$provider" in
api)
# Bedrock 設定を削除
jq '.env |= del(.CLAUDE_CODE_USE_BEDROCK, .AWS_REGION, .AWS_PROFILE)' \
"$settings_file" > "${settings_file}.tmp"
mv "${settings_file}.tmp" "$settings_file"
echo "✅ Switched to Anthropic API"
echo ""
echo "Set your API key in settings.local.json:"
echo ' "ANTHROPIC_API_KEY": "sk-ant-..."'
;;
bedrock)
# Bedrock 設定を追加
profile="${2:-default}"
jq '.env |= . + {
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "'$profile'"
}' "$settings_file" > "${settings_file}.tmp"
mv "${settings_file}.tmp" "$settings_file"
echo "✅ Switched to Amazon Bedrock"
echo ""
echo "Verify AWS credentials:"
echo " aws sts get-caller-identity --profile $profile"
echo ""
echo "If expired, login again:"
echo " aws login --profile $profile"
;;
*)
echo "❌ Unknown provider: $provider"
echo ""
echo "Available providers:"
echo " - api"
echo " - bedrock"
exit 1
;;
esac
echo ""
echo "Updated: $settings_file"
echo ""
echo "Restart Claude Code to apply changes."
スクリプトに実行権限を付与します。
chmod +x ~/.claude/skills/switch-provider/scripts/switch.sh
ステップ4: SKILL.md を更新して Bash から呼び出せるようにする
Claude Code のスキルは Bash ツールを使って呼び出します。ステップ2で作成した SKILL.md を以下のように更新します。
--- name: switch-provider description: Switch between Anthropic API and Amazon Bedrock disable-model-invocation: true allowed-tools: - Bash --- # Switch Provider Switch Claude Code's LLM provider between Anthropic API and Amazon Bedrock. ## Usage \`\`\`bash # Switch to Bedrock (default profile) /switch-provider bedrock # Switch to Bedrock (custom profile) /switch-provider bedrock bedrock-claude-code # Switch to Anthropic API /switch-provider api \`\`\` ## Implementation When user invokes this skill, run: \`\`\`bash bash ~/.claude/skills/switch-provider/scripts/switch.sh <provider> [profile] \`\`\` Where: - `<provider>` is either `api` or `bedrock` - `[profile]` is the optional AWS profile name (defaults to `default` if not specified)
使い方
claude
Bedrock に切り替え (デフォルトプロファイル):
> /switch-provider bedrock ✅ Switched to Amazon Bedrock Updated: .claude/settings.local.json Verify AWS credentials: aws sts get-caller-identity --profile default If expired, login again: aws login --profile default
Bedrock に切り替え (プロファイル指定):
> /switch-provider bedrock bedrock-claude-code ✅ Switched to Amazon Bedrock Updated: .claude/settings.local.json Verify AWS credentials: aws sts get-caller-identity --profile bedrock-claude-code If expired, login again: aws login --profile bedrock-claude-code
API に戻す:
> /switch-provider api ✅ Switched to Anthropic API Updated: .claude/settings.local.json Set your API key in settings.local.json
再起動すれば設定が反映されます。
ステータスバーでプロバイダーとコストを可視化する
「今 API と Bedrock どっち使ってるんだっけ?」
そんな疑問を解消するために、Claude Code のステータスバーに現在のプロバイダーとコストを表示します。
ステータスバーとは?
Claude Code の画面下部に表示される情報バーです。デフォルトでは以下が表示されます。
🤖 Claude Sonnet 4.6 │ 📊 Tokens: 1,234
これをカスタマイズして、プロバイダーとコスト情報を追加します。
詳細は Claude Code - ステータスバー公式ガイド を参照してください。
実装方法
ステータスバーは シェルスクリプト でカスタマイズします。Claude Code が JSON でセッション情報を渡してくれるので、それを元に表示内容を生成します。
ステップ1: ステータスバースクリプトを作成
~/.claude/statusline-command.sh:
#!/bin/bash
# Claude Code から渡される JSON を読み込む
input=$(cat)
# モデル情報を取得
model=$(echo "$input" | jq -r '.model.display_name // .model.id // "unknown"')
# プロバイダーを settings.local.json から判定
use_bedrock=$(jq -r '.env.CLAUDE_CODE_USE_BEDROCK // ""' .claude/settings.local.json 2>/dev/null)
# プロバイダーのバッジを生成
if [ "$use_bedrock" = "1" ]; then
provider="bedrock"
provider_badge="☁️ Bedrock"
else
provider="anthropic"
provider_badge="🌐 API"
fi
# トークン使用率を取得
input_tokens=$(echo "$input" | jq -r '.context_window.total_input_tokens // 0')
output_tokens=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
# コストを計算 (Sonnet 4.6 の料金で計算)
cost=$(echo "scale=4; ($input_tokens * 3 + $output_tokens * 15) / 1000000" | bc)
# ステータスラインを出力(1行目)
echo "🤖 ${model} (${provider_badge}) │ 💵 Session: \$${cost}"
# 2行目: トークン使用率 (オプション)
echo "📊 Input: ${input_tokens} tokens │ Output: ${output_tokens} tokens"
スクリプトに実行権限を付与します。
chmod +x ~/.claude/statusline-command.sh
ステップ2: Claude Code の設定に登録
~/.claude/settings.json:
{ "statuslineCommand": "~/.claude/statusline-command.sh" }
ステップ3: Claude Code を再起動して確認
claude
ステータスバーが以下のように表示されます。
🤖 Claude Sonnet 4.6 (☁️ Bedrock) │ 💵 Session: $0.0342 📊 Input: 8520 tokens │ Output: 1240 tokens
API に切り替えた場合:
🤖 Claude Sonnet 4.6 (🌐 API) │ 💵 Session: $0.0342 📊 Input: 8520 tokens │ Output: 1240 tokens
これで、今どちらを使っているか一目で分かるようになります。
[応用] 今月の Bedrock コストも表示する
Bedrock を使っている場合、AWS Cost Explorer から今月のコストを取得して表示できます。
Cost Explorer API の詳細は AWS Cost Explorer API リファレンス を参照してください。
~/.claude/statusline-command.sh に以下を追加:
# Bedrock の場合、今月のコストを取得
if [ "$provider" = "bedrock" ]; then
start_date=$(date -u +"%Y-%m-01")
end_date=$(date -u +"%Y-%m-%d")
aws_profile=$(jq -r '.env.AWS_PROFILE // "default"' .claude/settings.local.json 2>/dev/null)
bedrock_cost=$(aws ce get-cost-and-usage \
--region us-east-1 \
--profile "$aws_profile" \
--time-period "Start=${start_date},End=${end_date}" \
--granularity MONTHLY \
--metrics UnblendedCost \
--group-by Type=DIMENSION,Key=SERVICE \
--query 'ResultsByTime[0].Groups[].[Keys[0],Metrics.UnblendedCost.Amount]' \
--output text 2>/dev/null \
| grep "Bedrock Edition" \
| awk '{sum += $NF} END {printf "%.4f", sum}')
if [ -n "$bedrock_cost" ] && [ "$bedrock_cost" != "None" ]; then
printf "💰 Bedrock %s: \$%.4f\n" "$(date +%Y-%m)" "$bedrock_cost"
fi
fi
表示例:
🤖 Claude Sonnet 4.6 (☁️ Bedrock) │ 💵 Session: $0.0342 📊 Input: 8520 tokens │ Output: 1240 tokens 💰 Bedrock 2026-04: $127.45
注意点
- Cost Explorer API は1 日に最大 3 回更新 (リアルタイムではない)
- API 自体にも $0.01/request の料金がかかる
- 頻繁に呼び出すとコストが膨らむので、キャッシュ推奨
詳細は AWS Cost Explorer 料金 を参照してください。
よくあるトラブルと対処法
モデルが見つからない
Error: Model not found: us.anthropic.claude-sonnet-4-6
解決策: AWS Console で Bedrock モデルを有効化してください。
認証エラー
Error: The security token included in the request is expired
原因: 認証情報が期限切れになっています。
解決策: aws login で再ログインしてください。
aws login --profile bedrock-claude-code
ブラウザで AWS マネジメントコンソールにサインインすると、新しい認証情報が取得されます。
確認方法: 認証情報が有効かどうかを確認するには、以下を実行します。
aws sts get-caller-identity --profile bedrock-claude-code
成功すると以下のような出力が表示されます。
{ "UserId": "AIDACKCEVSQ6C2EXAMPLE:user@example.com", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/PowerUserAccess/user@example.com" }
Tips:
- 認証情報は一時的なもので、有効期限があります
- 期限切れになった場合は
aws loginで再ログインするだけ - 複数のプロファイルを使い分けることで、アカウント切り替えも簡単
リージョン エラー
Error: Bedrock is not available in region: ap-northeast-3
解決策: Bedrock が利用可能なリージョンに変更してください。
例えば:
us-east-1(米国東部 バージニア北部)us-west-2(米国西部 オレゴン)ap-northeast-1(アジアパシフィック 東京リージョン)
注意: ap-northeast-3 (アジアパシフィック 大阪リージョン) は Bedrock 未対応です。
利用可能なリージョンは Amazon Bedrock リージョン を参照してください。
詳細なトラブルシューティングは Claude Code - トラブルシューティング を参照してください。
参考資料
関連ブログ記事
- Claude Code CLI を Amazon Bedrock 経由で利用する - 基本的な切り替え方法を詳しく解説 (Serverworks)
Claude Code 公式ドキュメント
Amazon Bedrock
あとがき
本記事では、Claude Code の API/Amazon Bedrock 切り替えをスキルで自動化し、ステータスバーで可視化する方法を解説しました。 Claude Code をより便利に、より安全に、よりコスト意識を持って使えるようになります。ぜひお試しください。
兄いわく「スキルやステータスバーの実装は、Claude Code に自然言語でお願いしてもできますよ〜」だそうです。 確かに、このブログを読み込ませて「こんな感じのことをやりたいんだけど」と相談してみても良いかもしれませんね。
それではまた、ごきげんよう。
高橋 悠佑 (ポインコ兄) (執筆記事一覧)
健康志向です