Claude CodeでBedrock Claude Sonnet 4の429 too many tokensエラーを緩和する
はじめに
Claude CodeでAWS BedrockのClaude Sonnet 4を使用していると、並列実行時に「429 Too many tokens」エラーが頻発する問題に遭遇することがありませんか?同じような事象に直面する方を想定読書とします。
私も実際にこの問題に悩まされ、調査した結果、緩和方法を見つけることができました。この記事では、その原因と緩和方法について詳しく解説します。
前提・環境
- Claude Code(旧Claude CLI)を使用
- AWS Bedrock経由でClaude Sonnet 4を利用
- 並列でのリクエスト実行
- ちなみに並列実行にあたっては、弊社CTOのこちらの記事『claude-tilex: git worktreeと連携してClaude Codeを並列実行する』を参考にしました。
経緯・発生した問題
Claude CodeでBedrock Claude Sonnet 4を使用する際、以下のような症状が発生しました。
- 単発のリクエストは正常に動作する
- ただし、会話を続けていると429エラーが発生
- 並列でリクエストを送信するとすぐに429エラーが発生
- 簡単なプロンプトでもエラーになる
原因:Token Burndown Rateの仕組み
この問題の根本原因は、Claude 4シリーズ特有のToken Burndown Rateにあると考えます。
Token Burndown Rateとは
Token Burndown Rateは、APIの使用量がクォータ制限に対してどのようにカウントされるかを決定する仕組みです。重要なのは、これは料金計算ではなく、クォータ消費の計算だということです。
Claude 4の特殊な仕組み
モデル | Input Token Rate | Output Token Rate |
---|---|---|
Claude Sonnet 4 | 1:1 | 1:5 |
Claude Opus 4 | 1:1 | 1:5 |
その他のBedrockモデル | 1:1 | 1:1 |
Claude 4では、出力トークン1つにつき5倍のクォータが消費されます。
ref: https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html#quotas-increase
具体例
100,000 TPM(tokens per minute)のクォータがある場合:
シナリオ1: 10,000出力トークンを生成
- クォータ消費: 10,000 × 5 = 50,000トークン
- 残りクォータ: 50,000トークン
シナリオ2: 20,000出力トークンを生成
- クォータ消費: 20,000 × 5 = 100,000トークン
- 残りクォータ: 0トークン(次の分まで待機が必要)
対応方法
Claude Codeでこの問題を緩和するには、CLAUDE_CODE_MAX_OUTPUT_TOKENS
環境変数を設定することが私の環境においては有効でした。
CLAUDE_CODE_MAX_OUTPUT_TOKENS
については、こちらを参照してください。
設定方法
~/.claude/settings.json
を以下のように設定:
{
"env": {
"CLAUDE_CODE_USE_BEDROCK": "true",
"ANTHROPIC_MODEL": "us.anthropic.claude-sonnet-4-20250514-v1:0",
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": 5000
},
"permissions": {
"allow": [
"Bash(aws configure:*)"
],
"deny": []
}
}
ちなみに、公式によると、仕様上の最大出力トークン数は64,000トークンとのことです。
まとめ
Claude CodeでBedrock Claude Sonnet 4の429 too many tokensエラーを緩和するポイントは以下の通りです:
- Token Burndown Rateを理解する(出力トークンは5倍消費)
-
CLAUDE_CODE_MAX_OUTPUT_TOKENS
を適切に設定する
この設定により、Claude CodeでBedrock Claude Sonnet 4のエラー頻度を大幅に緩和できるようになりました。MAX_OUTPUT_TOKENSの設定による副作用を、追って調査しています。
同じ問題で困っている方の参考になれば幸いです。
追記: 20250611 CLAUDE_CODE_MAX_OUTPUT_TOKENS
にて低い値を設定すると以下のようなエラーが得られるので調整が必要でした。現在は5000にしているのですが、今のところ問題なく動作しています。
API Error: Claude's response exceeded the 200 output token maximum. To
configure this behavior, set the CLAUDE_CODE_MAX_OUTPUT_TOKENS environment
variable.
Discussion