node.js – 如何在AWS Lambda中使用phantomjs 2.0

我从下载了phantomjs二进制文件

https://github.com/bprodoehl/phantomjs/releases/,在我的localhost上测试正常.

打包并创建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)"}

有谁有任何想法?
谢谢

最佳答案 不是你想要的答案,但是将Lambda用于这样的“大二进制包”并不是一个好主意.我相信技术上可以做你想做的事情,但请记住,PhantomJs的启动成本非常高(内存cpu),所以你的lambda账单可能会非常高.

我建议你看看https://PhantomJsCloud.com能否在这种情况下满足你的需求. (披露:我写的)

如果继续沿Lambda路径继续,请尝试遵循以下资源:https://github.com/justengland/phantom-lambda-template

点赞