node.js - 如何将无头铬模块与 AWS Lambda 捆绑在一起?
问题描述
我正在尝试将 Puppeteer 与 Lambda 一起使用,但是,在无服务器部署中,由于超过 250mb 未捆绑包大小限制,导致 lambda 错误。
所以,为了达到这个限制,我改用了不包含铬的 Puppeteer 核心。这需要引用可执行文件的路径来启动 chrome。(例如puppeteer.launch({executablePath: headlessChromiumPath})
);
但是,我不确定如何将无头 Chromium 加载到我的容器中,以便以后可以引用它。
为了解决这个问题,我尝试了几件事:
首先,我下载了一个二进制无头铬并将其包含在我的 API 中。
文件结构:
-run-puppeteer.js
-headless_shell.tar.gz
引用如:
const browser = await puppeteer.launch({
executablePath: "../headless_shell.tar.gz"
});
但是,我无法导入或需要它,因此我的 lambda 无法识别它的存在并且没有将其包含在我的部署包中。我的问题是如何正确地将无头文件包含到我的 API 中,以便我可以从这个 lambda 中引用它?
如果这不是一个选项 - 我看到我可以将二进制文件上传到 S3,然后在容器启动时下载它。任何关于从哪里开始解决这个问题的参考将不胜感激。
解决方案
您可以使用chrome-aws-lambda将 chrome 与您的 Lambda 打包或创建一个 Lambda 层以避免包大小。
我在这里做了类似的事情chrome-aws-lambda
推荐阅读
- r - 图表中标签的数字格式
- reactjs - 如何从firebase中的引用文档中获取数据?
- python - 如何不解压附加到 .msg 的 .msg
- wordpress - SSL 续订后 CloudFront 分配不工作
- python - 通过选择全部来编辑 Google Colab 中的所有多次出现并将其作为单个操作进行编辑?有什么捷径吗?
- php - 特定服务php的清漆
- flutter - 我如何解决由颤振phone_state包引起的错误
- reactjs - 尽管添加了唯一键,但反应还是会发出警告
- android - 将 android gradle 插件从 2.2.2 迁移到 4.1.3 并构建问题
- c# - 使用工厂方法后使用大括号填充属性