The config profile could not be found

TL;DR — 你使用的 profile 名称并不存在于你的进程正在读取的 AWS 配置文件中。三个常见嫌疑人:一个过期的 AWS_PROFILE 环境变量、--profile/profile_name 里的拼写错误,或者 profile 定义在了错误的节头下——~/.aws/config 文件需要 [profile myprofile],而 ~/.aws/credentials 用的是普通的 [myprofile]。运行 aws configure list-profiles 对比一下。

含义

botocore.exceptions.ProfileNotFound: The config profile (myprofile) could not be found

任何 DynamoDB 调用在被签名之前,SDK 都要先解析出一个凭证 profile。如果某个 profile 是被_显式请求_的——通过 AWS_PROFILE--profileboto3.Session(profile_name=...)——而正在读取的 config/credentials 文件里没有同名的节,解析就会以这个错误停下。什么都没到达 AWS;这完全是本地配置查找失败。

为什么会发生

  • AWS_PROFILE 指向一个不存在的 profile——很久以前设在某个 shell rc 文件、容器镜像或 CI 配置里,之后那个 profile 被改名或删除了。
  • 拼写错误或大小写不匹配——profile 名称是精确匹配的。
  • 节头语法写错——在 ~/.aws/config 里,一个命名 profile 必须声明为 [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/profile_name 的拼写。

  3. 检查节头:

    # ~/.aws/config
    [profile myprofile]
    region = eu-west-1
    
    # ~/.aws/credentials
    [myprofile]
    aws_access_key_id = ...
    aws_secret_access_key = ...
  4. 如果这个 profile 从来就不存在,就创建它——aws configure --profile myprofile(Identity Center 的 profile 用 aws configure sso)。

  5. 在容器/CI 里,优先用环境凭证或角色,而不是 profile 文件——或者把 AWS_CONFIG_FILE 挂载/指向一个确实定义了该 profile 的文件。

profile 一旦能解析出来,再验证它是否真的够得着你的表——DynoTable 用你的 AWS profile 来连接,而它的 profile 切换器让“哪个 profile 看得到哪些表”一目了然。

在 DynoTable 中查看

DynoTable 读取与 CLI 相同的 ~/.aws/credentials~/.aws/config 文件 — 在“设置”→“配置文件”下添加配置文件,从下拉列表中选择配置文件名称,然后运行 测试连接* 以确认它在 SDK 之前解析。当表消失时,Profile切换(⌘P)会使陈旧的AWS_PROFILE变得明显。对于本地,使用端点 http://localhost:8000 和虚拟凭据创建配置文件。参见连接 AWS安装。连接后打开带有⌘K的表,然后在Query Builder中运行冒烟测试查询。

来源

复现方法

将 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

这是由客户端上的 botocore 在任何请求达到 AWS 之前引发的 - 这就是为什么没有 HTTP 状态以及重试无济于事的原因。括号中的名称是它要查找的配置文件,因此它会告诉你拼写错误是在代码中还是在配置文件中。

相关错误

参考资料

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

2026-07-26 针对 boto3 1.43.56 / botocore 1.43.56 复现——上方输出为原样照录。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。