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

Docker镜像中无法运行AWS Lambda的问题求助

解决AWS Lambda Docker镜像无法识别handler的问题

可能的问题点及解决步骤

1. 修正Dockerfile中的handler名称错误

你当前Dockerfile的CMD指令是:

CMD [ "app.handle" ]

但你的代码中导出的handler函数名为handler(exports.handler = handler;),因此需要将CMD改为:

CMD [ "app.handler" ]

这是最可能导致容器无法识别handler的直接原因。

2. 验证Webpack打包后的导出正确性

检查dist/blacklist-ips/app.js的最终导出部分,确认是否存在:

exports.handler = handler;
// 或者(因为libraryTarget设为commonjs2)
module.exports.handler = handler;

虽然你设置了mangle: false避免函数名被混淆,但仍需确保Webpack未修改handler的导出名称。

3. 检查Docker容器内的文件结构

运行容器进入交互模式,确认文件是否正确复制到/var/task(即${LAMBDA_TASK_ROOT}):

docker run -it --entrypoint /bin/bash <你的镜像名称>
# 查看目录内容
ls /var/task
# 确认handler导出存在
cat /var/task/app.js | grep "exports.handler"

如果app.js未出现在该目录,需修正COPY指令的路径。

4. 确认依赖安装完整性

检查容器内的node_modules是否包含你在Webpack externals中排除的依赖(如@aws-sdk/client-wafv2等):

ls /var/task/node_modules/@aws-sdk/client-wafv2
  • 若依赖缺失,需确保这些包在package.json的dependencies字段中(而非devDependencies),因为pnpm install --production不会安装开发依赖。
  • 若使用pnpm时存在依赖链接问题,可尝试替换为npm install --production测试是否解决问题。

5. 查看Lambda运行日志定位具体错误

直接运行容器,查看Lambda运行时的错误日志:

docker run <你的镜像名称>

日志会给出明确的错误提示,例如:

  • Cannot find module 'app':表示文件路径错误
  • handler 'handle' not found in module 'app':表示handler名称错误
    根据日志提示针对性解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:31:05