如何在AWS Lambda中使用PhantomJS 2.0

4
我从https://github.com/bprodoehl/phantomjs/releases/下载了PhantomJS二进制文件,并在我的本地主机上测试通过。
打包并创建AWS Lambda函数。
exports.handler = function (event, context) {
    var path = require("path");
    var Process = require("child_process");

    Process.exec(path.join(__dirname,"./bin/phantomjs")+" --version", function (err, data) {
        if (err) {
            console.log(err.message);
            context.fail(err.stack);
        } else {
            context.succeed(data);
        }

    })
}

但是当在Lambda中进行测试时,总是会得到以下错误:

{"errorMessage":"Error: Command failed: /bin/sh: /var/task/bin/phantomjs: Permission denied

    at ChildProcess.exithandler (child_process.js:658:15)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:766:16)
    at Socket.<anonymous> (child_process.js:979:11)
    at Socket.emit (events.js:95:17)
    at Pipe.close (net.js:466:12)"}

有人有任何想法吗? 谢谢。
1个回答

2
不是你想要的答案,但是像这样使用Lambda处理“大型二进制包”并不是一个好主意。我相信在技术上实现你想要的是可能的,但请记住,PhantomJs有一个相当大的启动成本(内存+CPU),因此你的Lambda账单可能会相当高,而你得到的价值却很少。
我建议你看看https://PhantomJsCloud.com是否可以满足你在这种情况下的需求。(声明:我写了它)
如果你继续使用Lambda,请尝试遵循这个资源:https://github.com/justengland/phantom-lambda-template

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接