EC2 で稀に発生するエラー「Unable to locate credentials.」を回避するには
困っていた内容
IAM ロールを設定した EC2 でアプリケーションを実行しています。
まれに「Unable to locate credentials.」のエラーが発生し、自然解消します。
エラーの回避策や、発生頻度を低減させる設定値などがあれば教えてください。
どう対応すればいいの?
再試行回数およびタイムアウト設定を調整してください。
Amazon EC2 インスタンスメタデータ - AWS SDKsとツール
metadata_service_num_attempts - 共有 AWS configファイル設定
AWS_METADATA_SERVICE_NUM_ATTEMPTS - 環境変数
この設定は、インスタンスメタデータサービスからデータの取得を試行するとき、停止するまでに試行する総回数を指定します。
デフォルト値: 1
有効な値:1 以上の数値。metadata_service_timeout - 共有 AWS configファイル設定
AWS_METADATA_SERVICE_TIMEOUT - 環境変数
インスタンスメタデータサービスからデータの取得を試行するときにタイムアウトするまでの秒数を指定。
デフォルト値: 1
有効な値:1 以上の数値。
インスタンスメタデータサービス (IMDS) へのアクセスは、一時的な問題により失敗する可能性があります。
AWS では「Design For Failure」(故障を前提とした設計)を推奨しており、このような一時的なエラーに対しては再試行回数やタイムアウト時間を調整することで低減が期待できます。
AWS CLI や AWS SDK を使用している場合、上記 2 つの設定値で再試行回数(metadata_service_num_attempts)やタイムアウト時間(metadata_service_timeout)を調整できます。
なお、エラーメッセージは使用している SDK によって異なる場合があります。
# AWS SDK for Java の例
Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain
…(中略)…
Failed to load credentials from IMDS.
参考資料
- 障害発生は予測不可能であり、また不可避です。AWS ではインフラの障害に対し要因分析および発生率の低減に努めておりますが、障害の発生を完全に防ぐことは困難です。
- このため AWS では「Design For Failure」(故障を前提とした設計)を推奨しています。また、監視サービスやリソースの提供、ベストプラクティスのご案内等を行っています。
SDK サポート 注意または詳細情報 AWS CLI v2 はい SDK for C++ 不可 SDK for Go V2 (1.x) 不可 SDK for Go 1.x (V1) 不可 SDK for Java 2.x 部分的 AWS_METADATA_SERVICE_TIMEOUT のみサポートされています。 SDK for Java 1.x 部分的 AWS_METADATA_SERVICE_TIMEOUT のみサポートされています。 SDK for JavaScript 3.x 不可 SDK for JavaScript 2.x 不可 SDK for Kotlin 不可 SDK for .NET 4.x 不可 SDK for .NET 3.x 不可 SDK for PHP 3.x はい SDK for Python (Boto3) はい SDK for Ruby 3.x 不可 SDK for Rust 不可 SDK for Swift 不可 PowerShell V5 のツール 不可 PowerShell V4 のツール 不可
「Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain」を修正するにはどうすればよいですか?
…(中略)…
- 断続的な IMDS 障害: 断続的な障害 (通常は数百ミリ秒継続) が発生した場合、これは通常、インスタンスメタデータサービス (IMDS) に到達する一時的なネットワークの問題を示します。
解決方法:
- デバッグログを有効にして障害のタイミングと頻度を分析する
- アプリケーションに認証情報関連の障害に対する再試行ロジックを実装することを検討する
- インスタンスと IMDS エンドポイント間のネットワーク接続の問題を確認する








