The*_*Cat 4 javascript node.js aws-lambda puppeteer
由于浪费了 2 周的时间,我尝试在 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)"
]
}
Run Code Online (Sandbox Code Playgroud)
配置 AWS:我使用“从 Amazon S3 上传文件”选项,因为它总是在 UI 超时时完成,CLI 命令也是如此。
运行时:Node.js 8.10
处理程序:index.handler
可执行角色:lambda_basic_execution。我还尝试使用具有 lambda 和 S3 完全访问权限的自定义角色,以防万一。
超时:30 秒
内存:3008 MB。
如果有人可以指导我一点。
我终于成功部署了 sambaiz 包。我还将 chronium 更新到最新的稳定版本( HeadlessChrome/68.0.3440.106 )和 puppeteer 的最新版本( 1.7.0 )。
https://www.dropbox.com/s/p4t7zod2nf97cwn/sambaiz-puppeteer.zip?dl=0
如果你想构建自己的包并且你在 Windows 上,你可以:
{
“名称”:“puppeteer-lambda-starter-kit”,
“版本”:“1.1.2”,
"description": "用于在 AWS Lambda 上运行 Puppeteer 的 Headless-Chrome 的入门套件",
“脚本”:{
“package”:“npm run package-prepare”,
"package-prepare": "npm run babel && 复制 package.json dist && cd dist && npm config set puppeteer_skip_chromium_download true -g && npm install --product",
"babel": "mkdir dist && \"./node_modules/.bin/babel\" src --out-dir dist",
"local": "npm run babel && 复制node_modules dist && node dist/starter-kit/local.js",
"package-nochrome": "npm run package-prepare && cd dist && zip -rq ../package.zip 。"
},
“依赖项”:{
"巴别塔": "^6.23.0",
"木偶师": "^1.1.1",
“焦油”:“^4.0.1”
},
“开发依赖项”:{
"aws-sdk": "^2.111.0",
"babel-cli": "^6.26.0",
“babel-preset-env”:“^1.6.0”
}
}