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

Lambda函数中Puppeteer-core无法执行@sparticuz/chrome-aws-lambda的Chromium二进制文件

在AWS Lambda上运行puppeteer-core + @sparticuz/chrome-aws-lambda时无法启动Chromium的解决方案

问题重现

错误信息:无法启动浏览器进程!/tmp/chromium:/tmp/chromium:无法执行二进制文件。
调用栈:
at onClose (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js:248:20)
at Interface. (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js:238:68)
at Interface.emit (node:events:539:35)
at Interface.emit (node:domain:475:12)
at Interface.close (node:readline:586:8)
at Socket.onend (node:readline:277:10)
at Socket.emit (node:events:539:35)
at Socket.emit (node:domain:475:12)
at endReadableNT (node:internal/streams/readable:1345:12)

排查与解决方案

  • 匹配Lambda运行环境架构
    @sparticuz/chrome-aws-lambda提供的Chromium二进制文件和Lambda运行时架构必须完全一致。比如:

    • 若使用x86_64架构的Lambda(如Node.js 18.x x86_64),安装对应架构的依赖包;
    • 若为arm64架构,确认依赖包支持该架构,或更换适配arm64的Chromium版本。
  • 修复/tmp目录执行权限
    Lambda的/tmp目录默认具备执行权限,但部署过程中若权限被修改,会导致Chromium二进制无法运行。可在启动浏览器前添加权限设置代码:

    const fs = require('fs');
    // 赋予Chromium二进制文件执行权限
    fs.chmodSync('/tmp/chromium', 0o755);
    
  • 对齐依赖版本兼容性
    puppeteer-core与@sparticuz/chrome-aws-lambda的版本必须严格匹配。例如@sparticuz/chrome-aws-lambda v119.x需搭配puppeteer-core v119.x,版本不兼容会直接导致Chromium启动失败,建议在package.json中锁定两者版本号。

  • 提升Lambda内存配置
    Chromium启动需要足够内存支撑,建议将Lambda内存设置为至少1024MB,内存不足会引发进程启动异常。

  • 确保部署包依赖正确注入
    不要手动打包Chromium二进制文件,依赖@sparticuz/chrome-aws-lambda在部署时自动注入对应环境的二进制文件。若手动部署,需确认依赖包完整,或使用Serverless、SAM等框架自动处理依赖打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:54:17