The config profile could not be found
TL;DR — 使おうとしているプロファイル名が、そのプロセスが読んでいる AWS 設定ファイルに存在しません。よくある容疑者は3つ。古い AWS_PROFILE 環境変数、--profile/profile_name のタイプミス、そして間違ったセクションヘッダーの下での定義です — ~/.aws/config には [profile myprofile] が必要で、~/.aws/credentials はプレーンな [myprofile] を使います。aws configure list-profiles を実行して見比べてください。
意味
botocore.exceptions.ProfileNotFound: The config profile (myprofile) could not be foundDynamoDB の呼び出しに署名する前に、SDK は認証情報プロファイルを解決します。AWS_PROFILE、--profile、boto3.Session(profile_name=...) などで 明示的に要求された プロファイルがあり、読み込まれている config/credentials ファイルにその名前のセクションが存在しない場合、解決はこのエラーで停止します。AWS には何も到達していません。完全にローカルな設定の探索が失敗しているだけです。
発生する理由
AWS_PROFILEが存在しないプロファイルを指している — シェルの rc ファイル、コンテナイメージ、CI 設定にずっと前に設定され、その後プロファイルの名前が変わったか削除された。- タイプミスや大文字小文字の不一致 — プロファイル名は完全一致で照合されます。
- セクションヘッダーの書式が違う —
~/.aws/configでは名前付きプロファイルを[profile myprofile]と宣言しなければなりません。そこに[myprofile]と書くと CLI/SDK は見つけられません(プレーンな形式は~/.aws/credentialsのものです)。 - ファイルがプロセスの探す場所にない —
AWS_CONFIG_FILE/AWS_SHARED_CREDENTIALS_FILEによるパスの上書き、sudo やサービスユーザーでのホームディレクトリの違い、~/.awsをマウントしていないコンテナなど。
修正方法
環境から実際に見えているものを一覧します:
aws configure list-profiles env | grep -i '^AWS_'ポインタを直すか解除します —
unset AWS_PROFILE(または一覧にあるプロファイルを設定)、--profile/profile_nameのつづりを修正します。セクションヘッダーを確認します:
# ~/.aws/config [profile myprofile] region = eu-west-1 # ~/.aws/credentials [myprofile] aws_access_key_id = ... aws_secret_access_key = ...そもそも存在しなかったなら作成します —
aws configure --profile myprofile(Identity Center のプロファイルならaws configure sso)。コンテナ/CI では、プロファイルファイルより環境変数の認証情報かロールを優先します — あるいは、本当にそのプロファイルを定義しているファイルを
AWS_CONFIG_FILEにマウント/指定してください。
プロファイルが解決できたら、実際にテーブルへ到達できるか確認しましょう — DynoTable は AWS のプロファイルを使って接続し、そのプロファイル切り替え機能が「どのプロファイルからどのテーブルが見えるか」を可視化します。
DynoTable で見る
DynoTable は CLI と同じ ~/.aws/credentials と ~/.aws/config を読み込みます — Settings → Profiles でプロファイルを追加し、ドロップダウンからプロファイル名を選び、Test Connection を実行して、SDK より先に解決できることを確かめてください。プロファイルの切り替え(⌘P)は、テーブルが消えたときに古い AWS_PROFILE が原因だとすぐ分かるようにしてくれます。
Local の場合は、エンドポイント http://localhost:8000 とダミーの認証情報でプロファイルを作ります。AWS に接続するとインストールを参照してください。接続できたら ⌘K でテーブルを開き、クエリビルダーでスモークテストのクエリを実行しましょう。
出典
- Configuration and credential file settings in the AWS CLI (2026-07-13 時点で検証)
- Configuring environment variables for the AWS CLI (2026-07-13 時点で検証)
再現方法
設定に存在しないプロファイルを boto3 に指定し、AWS 環境変数はクリアして、ほかに探索を満たすものがない状態にします。
import boto3
boto3.Session(profile_name='no-such-profile-xyz').client('dynamodb').list_tables()実際の出力:
ProfileNotFound: The config profile (no-such-profile-xyz) could not be foundこれはリクエストが AWS に届く前に、クライアント側の botocore が発生させます。だから HTTP ステータスがなく、リトライしても解決しないのです。括弧内の名前は探しに行ったプロファイル名なので、タイプミスがコード側なのか設定ファイル側なのかが分かります。
関連するエラー
- Unable to locate credentials — 認証情報がまったく見つからない(明示的なプロファイルは関係ない)。
- Could not load credentials from any providers — 同じチェーン失敗の JS SDK 版。
- SSO session expired — プロファイルは存在するが、その SSO ログインが失効した。
- 学習: DynamoDB Local と LocalStack のセットアップ
参考資料
- Configuration and credential file settings in the AWS CLI — AWS CLI User Guide
- Configuring environment variables for the AWS CLI — AWS CLI User Guide (AWS_PROFILE, AWS_CONFIG_FILE, AWS_SHARED_CREDENTIALS_FILE)
- Configuring IAM Identity Center authentication with the AWS CLI — AWS CLI User Guide (aws configure sso)
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。
2026-07-26 に boto3 1.43.56 / botocore 1.43.56 で再現しました — 上記の出力はそのままの逐語です。