由于浪费了两周的时间,我尝试在AWS Lambda上安装Puppeteer,但没有成功。
我尝试过: https://github.com/sambaiz/puppeteer-lambda-starter-kit 和 https://github.com/deathemperor/puppeteer-lambda-starter-kit
我的最终代码是: https://github.com/sambaiz/puppeteer-lambda-starter-kit
替换index.js: https://github.com/sambaiz/puppeteer-lambda-starter-kit/blob/master/src/index.js
通过: https://github.com/deathemperor/puppeteer-lambda-starter-kit/blob/master/src/index.js
此外,我在Windows 7上,因此要构建该程序包,请在package.json中删除/更改脚本部分的很多内容。 我创建了包含和不包含babel和lint的程序包。另外,我尝试使用其他版本的puppeteer和chronium。
有人建议我将puppeteer的版本修复为1.1.1,但没有成功。 请参阅(TheCat和cirdes):https://github.com/GoogleChrome/puppeteer/issues/323
我总是在aws上收到此错误:
{
"errorMessage": "Failed to launch chrome! spawn /tmp/headless_shell ENOENT\n\n\nTROUBLESHOOTING: [...]",
"errorType": "Error",
"stackTrace": [
"",
"",
"TROUBLESHOOTING:[..]",
"",
"onClose (/var/task/node_modules/puppeteer/lib/Launcher.js:299:14)",
"ChildProcess.helper.addEventListener.error (/var/task/node_modules/puppeteer/lib/Launcher.js:290:64)",
"emitOne (events.js:116:13)",
"ChildProcess.emit (events.js:211:7)",
"Process.ChildProcess._handle.onexit (internal/child_process.js:196:12)",
"onErrorNT (internal/child_process.js:372:16)",
"_combinedTickCallback (internal/process/next_tick.js:138:11)",
"process._tickDomainCallback (internal/process/next_tick.js:218:9)"
]
}
配置AWS: 我使用“从Amazon S3上载文件”选项,因为它总是通过UI超时和CLI命令的相同操作来完成。
运行时:Node.js 8.10
处理程序:index.handler
可执行角色:lambda_basic_execution。我还尝试过使用自定义角色,以防万一。他们可以完全访问lambda和S3。
超时:30秒
内存:3008 mb。
如果有人可以指导我一点。
答案 0 :(得分:1)
我终于设法部署了sambaiz软件包。我也将chronium更新为最新的稳定版本(HeadlessChrome / 68.0.3440.106)和最新的puppeteer版本(1.7.0)。
https://www.dropbox.com/s/p4t7zod2nf97cwn/sambaiz-puppeteer.zip?dl=0
如果您要构建自己的程序包并且在Windows上,则可以:
{ "name": "puppeteer-lambda-starter-kit", "version": "1.1.2", "description": "Starter Kit for running Headless-Chrome by Puppeteer on AWS Lambda", "scripts": { "package": "npm run package-prepare", "package-prepare": "npm run babel && copy package.json dist && cd dist && npm config set puppeteer_skip_chromium_download true -g && npm install --production", "babel": "mkdir dist && \"./node_modules/.bin/babel\" src --out-dir dist", "local": "npm run babel && copy node_modules dist && node dist/starter-kit/local.js", "package-nochrome": "npm run package-prepare && cd dist && zip -rq ../package.zip ." }, "dependencies": { "babel": "^6.23.0", "puppeteer": "^1.1.1", "tar": "^4.0.1" }, "devDependencies": { "aws-sdk": "^2.111.0", "babel-cli": "^6.26.0", "babel-preset-env": "^1.6.0" } }
答案 1 :(得分:0)
我也走过了这条痛苦的道路,建议您查看Google Cloud Functions,因为Google Cloud Functions从package.json
文件中安装了NPM软件包,而不是您必须在本地安装它们并上传{{1 }}目录(这超出了AWS 50MB的限制)。
您可以执行以下操作:
node_modules