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

AWS Lambda嵌套调用出现InvalidSignatureException异常问题咨询

根因说明

这个错误是AWS JS SDK v3 3.20版本的已知缺陷导致的:SDK会在Lambda执行环境中缓存签名凭证,当执行环境被复用(冷启动后的后续调用)时,会直接使用已经过期的缓存签名,即使Lambda系统时钟与NTP同步正常,也会触发签名过期报错,跨Lambda调用的链路延迟会进一步提高这个问题的出现概率。

修复建议

  • 优先升级AWS JS SDK版本:该签名缓存缺陷在3.49.0及之后的版本已经被官方修复,直接将@aws-sdk/client-lambda升级到最新稳定版即可解决绝大多数同类偶发错误。
  • 若暂时无法升级版本,可在初始化Lambda客户端时禁用签名凭证缓存,配置示例如下:
const { LambdaClient } = require("@aws-sdk/client-lambda");
const lambdaClient = new LambdaClient({
  signer: {
    cacheCredentials: false,
    clockSkew: 0
  }
});
  • 配置针对性重试策略,对InvalidSignatureException类型错误追加自动重试逻辑,避免单次签名错误导致业务请求失败,配置示例如下:
const { StandardRetryStrategy, defaultRetryDecider } = require("@aws-sdk/middleware-retry");
const customRetryDecider = (error) => {
  if (error.name === "InvalidSignatureException") return true;
  return defaultRetryDecider(error);
};
const retryStrategy = new StandardRetryStrategy(async () => 3, {
  retryDecider: customRetryDecider
});
const lambdaClient = new LambdaClient({ retryStrategy });
  • 检查接收端Lambda的超时配置:如果Lambda执行时长接近设置的超时阈值,调用其他Lambda的请求会被积压在事件队列中,实际发送时签名已经过期,这种情况适当调大Lambda的超时时间即可解决。

内容的提问来源于stack exchange,提问作者Michael Eliot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:54:00