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

Await导致AWS Lambda函数超时问题排查求助

Lambda异步代码超时的原因及解决方法

核心问题出在你创建的Promise没有调用resolve方法,导致它一直处于pending状态,await会无限等待,直到Lambda触发超时。

看你写的这段代码:

const test = new Promise(() => setTimeout(() => void 1000));

Promise的executor函数(括号内的匿名函数)默认接收resolve和reject两个参数,你完全没用到resolve。setTimeout执行后没有任何逻辑结束这个Promise,所以它永远不会进入完成状态,await test就会一直卡住,后面的console.log("test")自然永远无法执行,最终Lambda达到10秒超时时间后报错。

修正方法很简单,在setTimeout回调里调用resolve即可:

export const handler: Handler = async (event) => {
   console.log("stops after this");
   // 通过调用resolve结束Promise
   const test = new Promise(resolve => setTimeout(resolve, 1000));

   await test;

   // 现在会正常执行
   console.log("test");
}

如果是其他异步操作(比如MongoDB查询、第三方API请求)出现同样的超时问题,也要检查对应的Promise是否正确调用了resolve/reject,或者是否存在未处理的错误导致Promise一直处于pending状态。你的CDK配置没有问题,超时时间设置为10秒是合理的,问题完全出在Lambda代码的Promise逻辑上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:50:04