AWS JS SDK突发「访问密钥ID或安全令牌无效」错误排查求助
AWS JS SDK连接Local DynamoDB突然报UnrecognizedClientException的排查方案
近期在Github Actions CI流水线中运行Local DynamoDB时,原本正常的DocumentClient配置突然抛出如下错误:
UnrecognizedClientException: The Access Key ID or security token is invalid.
at Request.extractError (node_modules/aws-sdk/lib/protocol/json.js:80:27)
at Request.callListeners (node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (node_modules/aws-sdk/lib/request.js:686:14)
原配置代码如下:
const docClient = new AWS.DynamoDB.DocumentClient({ region: 'localhost', endpoint: 'http://localhost:8000', accessKeyId: 'DEFAULTACCESSKEY', secretAccessKey: 'DEFAULTSECRETKEY', convertEmptyValues: true, });
代码未做修改,且排查aws-sdk v2.1409.0版本更新日志未发现相关变更,可尝试以下排查方向:
- 锁定Local DynamoDB镜像版本:若CI中使用
amazon/dynamodb-local镜像的latest标签,可能是镜像自动更新导致验证逻辑变化。改为指定固定版本(如amazon/dynamodb-local:2.0.0),避免自动升级。 - 调整凭证配置结构:将accessKeyId和secretAccessKey嵌套进
credentials对象,强制SDK使用指定凭证,避免被默认凭证链覆盖:const docClient = new AWS.DynamoDB.DocumentClient({ region: 'localhost', endpoint: 'http://localhost:8000', credentials: { accessKeyId: 'DEFAULTACCESSKEY', secretAccessKey: 'DEFAULTSECRETKEY' }, convertEmptyValues: true, }); - 禁用SDK凭证链查找:添加配置
credentialProvider: new AWS.CredentialProviderChain([]),或在CI环境中显式设置环境变量AWS_ACCESS_KEY_ID=DEFAULTACCESSKEY、AWS_SECRET_ACCESS_KEY=DEFAULTSECRETKEY,阻止SDK读取其他凭证源(如Github Actions默认AWS凭证)。 - 排查CI环境变量:检查CI运行环境是否意外注入了AWS相关环境变量,这些变量会被SDK优先读取。可在CI步骤中添加
printenv | grep AWS命令确认变量情况。
内容的提问来源于stack exchange,提问作者HnrkLppk
相关产品推荐
相关产品推荐

