- AWS
AWS CLI Unable to locate credentialsの直し方
Unable to locate credentials. You can configure credentials by running "aws configure". は、AWS CLI が決まった順番で認証情報を探し、どこにも見つからなかったときのエラーです。 認証情報が「無い」とは限らず、別のプロファイルにある・別のユーザーの HOME を見ていることがよくあります。
まず次のコマンドで、今の状態で何が使われているかを確認します。
aws configure list # default プロファイル
aws configure list --profile dev # プロファイルを指定
| エラー | 意味 | 多い原因 |
|---|---|---|
Unable to locate credentials |
どこにも認証情報が無い | --profile の付け忘れ、sudo・cron で HOME や環境変数が変わった |
The config profile (prod) could not be found |
指定したプロファイルが無い | プロファイル名の打ち間違い、AWS_PROFILE に以前の名前が残っている |
Error loading SSO Token: Token for corp does not exist |
SSO(IAM Identity Center)にログインしていない | aws sso login をしていない・期限が切れた |
You must specify a region. |
リージョンが決まっていない | 認証情報とは別の問題 |
確認環境:Ubuntu 24.04、AWS CLI 1.46.1(botocore 1.43.62)(確認日 2026年10月10日)。認証情報の環境変数を外し、HOME を空のフォルダーにした状態から再現しました。認証情報を探す順番は、AWS 公式の CLI ユーザーガイドでも確認しています。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「AWS CLI Unable to locate credentialsの直し方」
認証情報を探す順番(--debug で見える)
--debug を付けると、どこを順に探したかが表示されます。
$ aws sts get-caller-identity --debug 2>&1 | grep "Looking for credentials"
botocore.credentials - DEBUG - Looking for credentials via: env
botocore.credentials - DEBUG - Looking for credentials via: assume-role
botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
botocore.credentials - DEBUG - Looking for credentials via: sso
botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
botocore.credentials - DEBUG - Looking for credentials via: login
botocore.credentials - DEBUG - Looking for credentials via: custom-process
botocore.credentials - DEBUG - Looking for credentials via: config-file
botocore.credentials - DEBUG - Looking for credentials via: ec2-credentials-file
botocore.credentials - DEBUG - Looking for credentials via: boto-config
botocore.credentials - DEBUG - Looking for credentials via: container-role
botocore.credentials - DEBUG - Looking for credentials via: iam-role
...
botocore.exceptions.NoCredentialsError: Unable to locate credentials
| 順番 | 探す場所 | 例 |
|---|---|---|
| 1 | 環境変数 | AWS_ACCESS_KEY_ID・AWS_SECRET_ACCESS_KEY・AWS_SESSION_TOKEN |
| 2 | ロールの引き受け(assume role・web identity) | config の role_arn |
| 3 | SSO(IAM Identity Center) | config の sso_session |
| 4 | 認証情報ファイル | ~/.aws/credentials |
| 5 | 設定ファイル・外部プロセス | ~/.aws/config、credential_process |
| 6 | コンテナ・EC2 のロール | ECS のタスクロール、EC2 のインスタンスプロファイル |
どの場所でも、--profile(または AWS_PROFILE)で選んだプロファイルの中だけを探します。 指定が無ければ default プロファイルです。
--debug の出力は長いので、2>&1 | grep -i credential で絞ると読みやすくなります。シークレットの値そのものは表示されませんが、出力を人に渡すときは中身を確認します。
原因1:--profile を付け忘れている(いちばん多い)
aws configure --profile dev で作ったプロファイルは、--profile dev を付けないと使われません。
# ~/.aws/credentials([default] が無く、[dev] だけがある)
[dev]
aws_access_key_id = AKIA................
aws_secret_access_key = ........................................
$ aws sts get-caller-identity
Unable to locate credentials. You can configure credentials by running "aws configure".
$ aws configure list
profile <not set> None None
access_key <not set> None None ← default には何も無い
$ aws configure list --profile dev
profile dev manual --profile
access_key ****************0001 shared-credentials-file ← dev にはある
region ap-northeast-1 config-file ~/.aws/config
| 直し方 | 書き方 |
|---|---|
| コマンドごとに指定 | aws s3 ls --profile dev |
| そのシェルの間ずっと使う | export AWS_PROFILE=dev |
| プロファイルの一覧を見る | aws configure list-profiles(AWS CLI v2) |
aws configure list の Type・Location の列で、値がどこから来たか(環境変数・ファイル・--profile)が分かります。
原因2:プロファイル名が違う
$ aws sts get-caller-identity --profile prod
The config profile (prod) could not be found
$ export AWS_PROFILE=prod; aws sts get-caller-identity
The config profile (prod) could not be found
AWS_PROFILE に以前使っていたプロファイル名が残っていると、何を実行してもこのエラーになります。echo $AWS_PROFILE で確認します。
ファイルの書き方にも注意します。
| ファイル | 見出しの書き方 |
|---|---|
~/.aws/credentials |
[dev] |
~/.aws/config |
[profile dev](default だけは [default]) |
原因3:sudo・cron・systemd で、環境変数や HOME が変わる
認証情報は、実行したユーザーの HOME の ~/.aws から読みます。 別のユーザーや別の環境で動かすと、見ている場所が変わります。
$ export AWS_PROFILE=dev
$ sudo -u dev env | grep -c ^AWS_PROFILE
0 ← sudo を通すと AWS_PROFILE が消えた
$ sudo -u dev env | grep ^HOME
HOME=/home/dev ← HOME は、切り替えた先のユーザー
$ sudo -E -u dev env | grep ^HOME
HOME=/root ← -E を付けると、元の HOME が残った
| 実行のしかた | 起きること | 直し方 |
|---|---|---|
sudo aws ... |
AWS_PROFILE などの環境変数が消える。HOME が root になり、root の ~/.aws を見る |
sudo を付けない。必要なら --profile をコマンドに書く |
| cron・systemd | 環境変数が引き継がれない。HOME が違う・無いことがある | スクリプトの中で --profile を指定、またはファイルの場所を環境変数で指定 |
HOME が無い状態を作ると、AWS_PROFILE=dev を渡していても The config profile (dev) could not be found になりました。ファイルの場所を環境変数で指定すると、HOME に関係なく読めました。
export AWS_SHARED_CREDENTIALS_FILE=/opt/app/.aws/credentials
export AWS_CONFIG_FILE=/opt/app/.aws/config
aws s3 ls --profile dev
原因4:SSO(IAM Identity Center)にログインしていない
SSO のプロファイルは、aws sso login でログインしてトークンを取得するまで使えません。
$ aws sts get-caller-identity --profile sso-dev
Error loading SSO Token: Token for corp does not exist
aws sso login --profile sso-dev # ブラウザーでログイン
aws sts get-caller-identity --profile sso-dev
AWS 公式のユーザーガイドでは、SSO のセッションが切れたときは、もう一度 aws sso login でログインし直すとされています。毎朝同じエラーになるなら、セッションの期限切れです。
原因5:EC2・ECS・Lambda で、ロールが付いていない
EC2 のインスタンスや ECS のタスクでは、アクセスキーを置かず、インスタンス・タスクに IAM ロールを付けるのが基本です。ロールが付いていない、またはコンテナからインスタンスのメタデータに届かないと、最後の iam-role・container-role でも見つからず、このエラーになります。
| 確認すること | 方法 |
|---|---|
| EC2 にロールが付いているか | マネジメントコンソールのインスタンスの詳細「IAM ロール」 |
| ECS のタスクロール | タスク定義の「タスクロール」(実行ロールとは別) |
アクセスキーを置く前に
| 環境 | おすすめ |
|---|---|
| 自分のパソコン | SSO(IAM Identity Center) で一時的な認証情報を使う |
| EC2・ECS・Lambda | ロールを付ける(アクセスキーを置かない) |
| GitHub Actions などの CI | OIDC でロールを引き受ける(web identity) |
| どうしてもアクセスキー | aws configure で ~/.aws/credentials に。リポジトリやスクリプトに書かない |
確認の手順(チェックリスト)
| 順番 | 確認すること | 方法 |
|---|---|---|
| 1 | 何が使われているか | aws configure list、aws configure list --profile 名前 |
| 2 | --profile の付け忘れ |
[default] が無く、名前付きのプロファイルだけではないか |
| 3 | AWS_PROFILE の値 |
echo $AWS_PROFILE |
| 4 | 実行ユーザーと HOME | sudo・cron・systemd で別のユーザーになっていないか |
| 5 | SSO | aws sso login --profile 名前 |
| 6 | どこを探したか | --debug 2>&1 | grep -i credential |
よくある質問
Q. Python(boto3)でも同じエラーが出ます。
A. boto3 も同じ順番で探します(AWS CLI v1 と同じ botocore を使っています)。boto3.Session(profile_name="dev") のように、プロファイルを指定します。
Q. aws configure をやり直しても直りません。
A. aws configure は default プロファイルに書きます。実行しているコマンドが別のプロファイル(AWS_PROFILE)を見ていないか、別のユーザー(sudo)で実行していないかを確認します。
Q. エラーが ExpiredToken・InvalidClientTokenId に変わりました。
A. 認証情報は見つかっていて、その中身(期限切れの一時的な認証情報、削除されたアクセスキーなど)が AWS に受け付けられなかった状態です。SSO なら aws sso login、アクセスキーなら IAM で有効なキーかを確認します。
まとめ
- 決まった順番で探して、どこにも無いときのエラー。
aws configure listで現状を確認する - いちばん多いのは
--profileの付け忘れ。名前付きのプロファイルだけでは default が空 AWS_PROFILEに以前の名前が残っているとcould not be found- sudo は環境変数を消し、HOME を変える。cron・systemd も同じ。
--profileとファイルの場所の指定で対処 - SSO は
aws sso login。毎朝出るならセッションの期限切れ - EC2・ECS はロールを付ける。アクセスキーを置かない
参考・出典
確認日はいずれも 2026年10月10日です。
- AWS CLI ユーザーガイド(v1)「Configuring settings for the AWS CLI」(設定の優先順位):https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-configure.html
- AWS CLI ユーザーガイド「Configuration and credential file settings」:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
- AWS CLI ユーザーガイド「Configuring IAM Identity Center authentication with the AWS CLI」:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「AWS CLI Unable to locate credentialsの直し方」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。