我尝试将 Puppeteer 与 Lambda 结合使用,但是,在无服务器部署中,由于超过 250mb 未捆绑包大小限制,Lambda 会出错。
因此,为了突破限制,我改用了 Puppeteer 核心,它不包含铬。这需要引用可执行文件的路径来启动 chrome。 (例如。puppeteer.launch({executablePath: headlessChromiumPath})
);
但是,我不确定如何将无头 Chromium 加载到我的容器中,以便稍后引用它。
为了解决这个问题,我正在尝试以下几件事:
首先,我下载了一个二进制 headless chromium 并将其包含到我的 API 中。
文件结构:
-run-puppeteer.js
-headless_shell.tar.gz
参考如下:
const browser = await puppeteer.launch({
executablePath: "../headless_shell.tar.gz"
});
但是,我无法导入或要求它,因此我的 lambda 无法识别它的存在,并且不会将其包含在我的部署包中。
我的问题是如何正确地将无头文件包含到我的 API 中,以便我可以从这个 lambda 中引用它?
如果这不是一个选项 - 我发现我可以将二进制文件上传到 S3,然后在容器启动时下载它。任何关于从哪里开始解决这个问题的参考资料将不胜感激。
您可以使用铬-AWS-lambda https://github.com/alixaxel/chrome-aws-lambda将 chrome 与 Lambda 一起打包,或者创建 Lambda 层以避免包大小。
我做了类似的事情here https://github.com/erezrokah/lighthouse-layer基于chrome-aws-lambda
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)