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(或类似)凭证;浏览器中没有环境凭证链。
如何修复
选定一个凭证来源并端到端地验证它。 最快的检查:在运行你代码的_同一个_环境(同一用户、同一容器)中执行
aws sts get-caller-identity。本地开发:
aws configure(写入[default]),或者当你只用命名 profile 时设置AWS_PROFILE=myprofile。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'} });在 AWS 运行时中,附加角色——EC2 上的实例配置文件、ECS/Fargate 上的任务角色、Lambda 上的执行角色——而不是分发密钥。
在 EC2 上高并发时,只创建一次客户端(模块作用域),让凭证被解析并缓存,而非每个请求重新获取;SDK 重试加上一个共享客户端可以吸收 IMDS 的抖动。
不要混用 SDK v2 和 v3 的凭证设置——为你代码实际导入的那个 SDK 做配置。
一旦凭证解析成功,浏览数据是确认整条流水线的最快方式——DynoTable 桌面应用用你的 AWS profile(以及 DynamoDB Local)连接并立即显示你的表。在组合第一个查询?从 DynamoDB Expression Builder 开始。
相关错误
- Unable to locate credentials (boto3)——Python 中同样的失败。
- The security token included in the request is invalid——找到了凭证,但被拒绝。
- Missing region in config
- 学习:Running DynamoDB Local
References
- Set credentials in Node.js — AWS SDK for JavaScript v3 Developer Guide (the default credential provider chain)
- AWS SDKs and Tools standardized credential providers — AWS SDKs and Tools Reference Guide
- AWS Signature Version 4 for API requests — IAM User Guide (why every request needs signed credentials)
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。