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 found

DynamoDB の呼び出しに署名する前に、SDK は認証情報プロファイルを解決します。AWS_PROFILE--profileboto3.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 をマウントしていないコンテナなど。

修正方法

  1. 環境から実際に見えているものを一覧します:

    aws configure list-profiles
    env | grep -i '^AWS_'
  2. ポインタを直すか解除しますunset AWS_PROFILE(または一覧にあるプロファイルを設定)、--profile/profile_name のつづりを修正します。

  3. セクションヘッダーを確認します:

    # ~/.aws/config
    [profile myprofile]
    region = eu-west-1
    
    # ~/.aws/credentials
    [myprofile]
    aws_access_key_id = ...
    aws_secret_access_key = ...
  4. そもそも存在しなかったなら作成しますaws configure --profile myprofile(Identity Center のプロファイルなら aws configure sso)。

  5. コンテナ/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 でテーブルを開き、クエリビルダーでスモークテストのクエリを実行しましょう。

出典

再現方法

設定に存在しないプロファイルを 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 ステータスがなく、リトライしても解決しないのです。括弧内の名前は探しに行ったプロファイル名なので、タイプミスがコード側なのか設定ファイル側なのかが分かります。

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

2026-07-26 に boto3 1.43.56 / botocore 1.43.56 で再現しました — 上記の出力はそのままの逐語です。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。