Timed out after 60s waiting for AWSが出る原因 — Bedrockウィザードの切り分け
Bedrockセットアップウィザードの検証で出る「Timed out after 60s waiting for AWS」の意味と、aws sts get-caller-identityによる切り分け、上限を延ばす条件をまとめます。
/setup-bedrockのウィザードが認証情報の検証で止まり、Timed out after 60s waiting for AWSと表示されたら、AWSへの呼び出しの1つが60秒以内に終わらなかったという意味です。Claude Code側の設定ミスではなく、ネットワーク、プロキシ、または入力待ちの資格情報ヘルパーのどれかが応答を返していません。
まず同じシェルでaws sts get-caller-identityを実行してください。これも固まるなら、原因はClaude Codeの外にあります。
ウィザードの操作手順と認証情報のキャッシュは/setup-bedrockウィザードの解説が扱っています。この記事は、画面に出た文言から原因を絞り込む切り分けに絞っています。
画面に出る3つの表示は別物
ウィザードの検証ステップでは、似た3つの表示が出ます。どれも「AWSの待ち時間切れ」ですが、起きている場所が違います。
| 表示 | 出る場所 | 意味 |
|---|---|---|
Timed out after 60s waiting for AWS. Check your network and proxy settings; … | 出る場所資格情報の検証 | 意味検証中のAWS呼び出し(資格情報の取得やIDの確認)が上限内に終わらなかった |
A request to AWS timed out. Check your network and proxy settings, then try again. | 出る場所同じ検証ステップ | 意味1回のリクエストが、リクエスト単位のタイムアウトで先に失敗した |
モデル名の横のunreachable | 出る場所モデルのピン留め | 意味同じ種類のタイムアウトがモデル確認で起きた。上の2つの文言は出ない |
1行目の文言は、末尾がraise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MSという案内で終わります。文中の60sは固定値ではなく、いま効いている上限の秒数です。既定は60秒で、環境変数を設定していればその値が出ます。
2行目は短い文言で、上限を延ばす案内が付きません。文言が案内しているのは「ネットワークとプロキシの設定を確認して、もう一度試す」ことだけなので、対処の中心はその確認になります。
ウィザードは60秒をどこに当てているか
ウィザードは、APIキー以外の認証方法を選んだときに、チェーン解決と同じ60秒の上限を検証中の個々のAWS呼び出しに当てます。対象は次のとおりです。
- 検証中のAWS呼び出しの1つひとつ(資格情報の取得、IDの確認など)
- 各モデルを確認する前に行う資格情報の取得
つまり、60秒は検証全体の合計ではなく、呼び出し1回ごとの上限です。どの呼び出しで詰まったかによって、検証ステップで止まるか、モデルの確認でunreachableになるかが分かれます。
通常のチャットでは、一度解決した資格情報がメモリに保持され、期限の5分前まで(期限がなければ1時間)再利用されます。SSOプロファイルでも、待たされるのは主に最初の解決と期限切れ後の再解決です。一方ウィザードは、検証中のAWS呼び出しの1回ごとに60秒の上限を当てます。
Amazon Bedrock APIキーを選んだ場合は、AWSの既定の資格情報チェーンを使いません。この60秒の制限も、APIキーでは当たらないと記載されています。キーでの認証はAWS_BEARER_TOKEN_BEDROCKの解説にまとめています。
切り分け: 同じシェルでaws sts get-caller-identityを試す
ウィザードを何度も開き直す前に、AWS CLIだけで同じ待ちが再現するかを見ます。ウィザードで選んだAWS_PROFILEと同じ値を、同じシェルで指定してください。
export AWS_PROFILE=myprofile
time aws sts get-caller-identitytimeを付けると、返ってくるまでの秒数が分かります。結果の読み方は次のとおりです。
60秒待ちの原因を絞り込む
- Qaws sts get-caller-identityも固まる、または60秒近くかかるか?答えがいいえのとき答えがはい
AWS CLIでは問題なく通る状態です。ウィザードを開いたシェルと
AWS_PROFILEが、いま試したものと同じかを見直してください。 - Qコマンドが入力やブラウザ操作を待って止まっているか?答えがいいえのとき答えがはい
AWSプロファイルの資格情報ヘルパー(
credential_processなど)が、見えない入力を待っています。先にaws sso login --profile myprofileのようなサインインを済ませてから、ウィザードを開き直します。
ネットワークかプロキシの問題
入力待ちでもなく固まる場合は、AWSへの通信が止められています。SSOのトークン更新もAWSへの通信なので、プロキシの設定を疑ってください。
原因別の直し方
先にサインインを済ませてから開く
資格情報ヘルパーが入力を待つ構成では、ヘルパーのプロンプトがウィザードの裏に隠れていることがあります。見えない入力待ちが60秒に達すると、この表示になります。
aws sso login --profile myprofile
claudeサインインを終えた状態でウィザードを開けば、検証中にヘルパーが対話を始める必要がなくなります。
ネットワークとプロキシを見直す
表示の案内どおり、AWSへのリクエストを止めているネットワークかプロキシが典型的な原因です。SSOのトークン更新も同じ経路を通ります。aws sts get-caller-identityが普通に返るのにウィザードだけ止まるなら、ウィザードを開いたシェルのAWS_PROFILEが、CLIで試したものと同じかを確かめます。
TLS検査をするプロキシの内側では、証明書の扱いが別の失敗を生むことがあります。その場合はunable to get local issuer certificateというエラーか、モデルのunreachable表示になります。原因と見分け方は、下のモデルのピン留めの節に書いています。
上限を延ばすのは、本当に時間がかかる構成だけ
aws-vault経由でMFA付きのブラウザSSOを通すような構成では、サインインに60秒以上かかるのが普通です。このときだけ、上限をミリ秒で引き上げます。
export CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS=180000
claude設定ファイルのenvブロックに入れる場合の書き方は、次のようになります。
{
"env": {
"CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS": "180000"
}
}この変数はv2.1.207以降が前提です。延ばしてもaws sts get-caller-identity自体が固まる場合は解決しません。延ばした後も同じ文言が出るなら、文言の秒数が設定した値に変わっているかを見てください。値が反映されていれば、設定は効いていて、待っている相手が本当に応答していません。ヘルパーが原因なら、ヘルパーを直すほうが先です。
プロキシの内側で確かめること
プロキシが原因のときは、止まり方で見当がつきます。
- 証明書のエラー(
unable to get local issuer certificate)が出る: TLS検査をするプロキシのルート証明書が信頼されていません。CAの設定はNODE_EXTRA_CA_CERTSかOSの証明書ストアで渡します - 何も出ずに60秒で止まる: AWSへの通信そのものが通っていません。プロキシの許可リストに、STSやSSOのエンドポイントが入っているかを見ます
- SSOのブラウザタブが繰り返し開く: VPNやTLS検査プロキシがSSOのブラウザフローを妨げている状態です。設定ファイルの
awsAuthRefreshを外し、aws sso loginを起動前に手で済ませる運用に切り替えます
モデルのピン留めで出るunreachableの意味
モデルのピン留め画面で同じ種類のタイムアウトが起きると、エラー文言の代わりに、そのモデルがunreachableと表示されます。モデルが使えないという意味ではなく、確認の呼び出しが終わらなかったという意味です。
もう1つ、unreachableが出る原因があります。TLS検査をするプロキシの内側で、ルート証明書がOSの証明書ストアにしかない環境です。v2.1.261より前は、ウィザードで「環境にある資格情報を使う」を選んだときの資格情報取得が、実行環境の既定の証明書ストアしか信頼しませんでした。その結果、unable to get local issuer certificateで失敗するか、モデルがunreachableになりました。推論のリクエストは通るのにウィザードだけ失敗する場合は、バージョンを確かめてください。
バージョンによる違い
同じ待ち時間切れでも、古いバージョンでは画面の出方が違います。
| バージョン | 変わったこと |
|---|---|
| v2.1.207より前 | 変わったこと資格情報チェーンが詰まると、リクエストが無期限に待ち続けた。CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MSもこの版から |
| v2.1.218 | 変わったことパーティション付きリージョンのassume-roleプロファイルと、プロキシ経由しか出口がないネットワークで、プロファイル検証が失敗する問題が修正された |
| v2.1.260 | 変わったことAWSへのリクエストにCA証明書の設定を適用。それ以前は、設定したプロキシ経由のときだけ適用され、直接接続では既定の証明書ストアだけを信頼した |
| v2.1.261 | 変わったことAWSや資格情報ヘルパーが応答しないとき、ウィザードが固まらずタイムアウトの明確なエラーを出すようになった。TLS検査プロキシ下でのモデル確認の失敗も修正された |
古いバージョンのウィザードで、エラーが出ないまま画面が動かないときは、この文言が出る以前の挙動の可能性があります。claude --versionで版を確かめ、v2.1.261以降に更新してから切り分けをやり直してください。プロキシ経由しか出口がない環境で検証だけが失敗するときも、v2.1.218より前なら版の問題です。
通常のチャットで出る別のタイムアウトとの違い
ウィザードではなく、使用中のチャットで次のエラーが出ることがあります。
API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.こちらは、ウィザードの外で既定の資格情報チェーンが60秒で打ち切られた場合のエラーです。原因の見分け方と対処はdefault-chain credential resolve timed outの解説にあります。ウィザード自体の使い方は/setup-bedrockウィザードの解説を参照してください。
どちらも延ばす変数はCLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MSで共通です。一方、Anthropic APIへのリクエストが時間切れになる場合は、AWSの資格情報とは無関係です。Request timed outの解説が扱っています。
よくある質問
ウィザードを使わずに設定すれば、この表示は避けられますか
ウィザードを経由しない手動設定でも、環境変数を直接設定してBedrockを使えます。手順はウィザードの解説にあります。ただし、通常のチャットでも資格情報チェーンの解決には60秒の上限があります。
資格情報をファイルに書き換えずに注入できますか
設定のawsCredentialExportを使うと、.awsのファイルを書き換えずにBedrock認証を渡せます。awsCredentialExportの解説で扱っています。
まとめ
Timed out after 60s waiting for AWSは、ウィザードの検証で、AWSへの呼び出しが上限内に終わらなかったという表示です。最初の一手は、同じシェルと同じプロファイルでaws sts get-caller-identityを試すことです。ここで固まるならネットワーク、プロキシ、資格情報ヘルパーのどれかを直します。上限を延ばすのは、MFA付きSSOなど、時間がかかるのが前提の構成に限ります。