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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?