Could not load credentials from any providers

TL;DR — AWS SDK for JavaScript v3 走遍了它的整条默认凭证链——环境变量、SSO、共享 config/credentials profile、web identity,以及容器/实例元数据端点——没有一个产出凭证。给这条链一个它能找到的来源(环境变量、aws configure、一个附加的角色),或者显式地把 credentials 传给客户端——对于 DynamoDB Local,这些反正应该是虚拟值。

含义

CredentialsProviderError: Could not load credentials from any providers

每个 DynamoDB 请求都必须经过 SigV4 签名,因此在第一次调用之前,SDK 会通过它的提供者链解析凭证。这个错误就是这条链的"什么都没找到"的结果——它在任何到 DynamoDB 的网络调用之前触发,是 boto3 的 Unable to locate credentials 的 JS v3 等价物。它不是权限问题(那会是 AccessDeniedException)——根本没有任何身份。

为什么会发生

  • 任何地方都没有配置凭证——环境中没有 AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY,没有 ~/.aws/credentials,没有角色。
  • [default] profile 不存在——你只有命名的 profile,但没有设置 AWS_PROFILE,因此链去找 [default] 却什么都没找到。
  • 进程看不到你 shell 的环境——一个服务管理器、cron 任务、容器或 IDE 启动,没有继承你导出的变量。
  • 运行时中没有附加角色——一个没有预期 IAM 角色的 ECS 任务、EC2 实例或 Lambda,因此元数据提供者返回空。
  • 高负载下的间歇性问题:IMDS 限流——高并发工作负载猛烈请求 EC2 实例元数据服务,会导致凭证获取偶发失败(这个错误"随机"出现的一个已知原因)。
  • 没有身份来源的浏览器代码——前端调用需要 Cognito Identity Pool(或类似)凭证;浏览器中没有环境凭证链。

如何修复

  1. 选定一个凭证来源并端到端地验证它。 最快的检查:在运行你代码的_同一个_环境(同一用户、同一容器)中执行 aws sts get-caller-identity

  2. 本地开发: aws configure(写入 [default]),或者当你只用命名 profile 时设置 AWS_PROFILE=myprofile

  3. DynamoDB Local / LocalStack: 别依赖这条链——把显式的虚拟凭证与端点一起传入:

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  4. 在 AWS 运行时中,附加角色——EC2 上的实例配置文件、ECS/Fargate 上的任务角色、Lambda 上的执行角色——而不是分发密钥。

  5. 在 EC2 上高并发时,只创建一次客户端(模块作用域),让凭证被解析并缓存,而非每个请求重新获取;SDK 重试加上一个共享客户端可以吸收 IMDS 的抖动。

  6. 不要混用 SDK v2 和 v3 的凭证设置——为你代码实际导入的那个 SDK 做配置。

一旦凭证解析成功,浏览数据是确认整条流水线的最快方式——DynoTable 用你的 AWS profile 连接(以及 DynamoDB Local)并立即显示你的表,它从 ~/.aws 解析凭证的方式与 CLI 完全相同。

在 DynoTable 中检查

如果 DynoTable 列出你的表,则凭据解析 — 问题在于你的进程读取哪个源。在“设置”→“配置文件”下添加相同的配置文件,运行 Test Connection,并在你的应用程序使用的同一 shell 中与 aws sts get-caller-identity 进行比较。对于本地,在配置文件上使用虚拟 local/local 凭据设置端点 http://localhost:8000。参见连接 AWS安装。连接后用⌘K打开表格。通过 Query Builder 运行测试查询以确认签名有效。

来源

相关错误

参考资料

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

无需控制台即可使用 DynamoDB

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

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