You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:52:21