Node.js连接本地DynamoDB报UnrecognizedClientException令牌无效如何解决
本地DynamoDB UnrecognizedClientException 错误解决方案
1. 修正SDK连接配置
本地部署的DynamoDB默认不需要真实AWS凭证,配置任意非空的密钥即可,你配置了AWS控制台真实凭证反而可能触发校验逻辑报错,需同时显式指定本地endpoint和region,避免sdk默认请求线上AWS服务。
正确配置示例
AWS SDK v2 版本:
import AWS from 'aws-sdk'; AWS.config.update({ region: 'local', endpoint: 'http://localhost:8000', // 替换为你本地DynamoDB实际启动的地址 accessKeyId: 'testKey', // 任意非空字符串即可 secretAccessKey: 'testSecret' // 任意非空字符串即可 }); const dynamodb = new AWS.DynamoDB();
AWS SDK v3 版本:
import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; const dynamodbClient = new DynamoDBClient({ region: "local", endpoint: "http://localhost:8000", credentials: { accessKeyId: "testKey", secretAccessKey: "testSecret" } });
2. 排查隐式凭证配置优先级问题
AWS SDK会按照优先级读取凭证,如果你没有在代码中显式指定credentials,以下位置的无效凭证会触发报错:
- 本地凭证文件:检查
~/.aws/credentials(Windows路径为C:\Users\<你的用户名>\.aws\credentials),如果该文件内的凭证过期、无效,可临时重命名.aws目录后重启服务测试 - 环境变量:检查当前运行环境是否设置了
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN相关环境变量,可执行对应系统命令查看,存在无效变量的话先清除再测试
3. 检查本地DynamoDB启动参数
普通测试场景下不要添加额外的权限校验启动参数,推荐使用默认共享数据库模式启动,启动命令参考:java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
如果你开启了IAM身份校验类的启动参数,需要确认你使用的凭证和校验规则匹配。
内容的提问来源于stack exchange,提问作者USER
相关产品推荐
相关产品推荐

