Ubuntu Can';不要让phantomjs在aws lambda上工作

Ubuntu Can';不要让phantomjs在aws lambda上工作,ubuntu,amazon-web-services,phantomjs,aws-lambda,Ubuntu,Amazon Web Services,Phantomjs,Aws Lambda,我正在尝试使用节点lambda和我在web上找到的零碎信息来执行phantomjs 我在使用node43部署node lambda时遇到了一些问题,但是手动安装最新的源代码似乎在这方面有所帮助 但是现在我在运行lambda函数时遇到了问题。我明白了 2016-04-12T16:47:12.133Z 3330adb9-00ce-11e6-9c08-d79a6bc84748 Calling phantom: /var/task/phantomjs [ '/var/task/phant

我正在尝试使用节点lambda和我在web上找到的零碎信息来执行phantomjs

我在使用node43部署node lambda时遇到了一些问题,但是手动安装最新的源代码似乎在这方面有所帮助

但是现在我在运行lambda函数时遇到了问题。我明白了

2016-04-12T16:47:12.133Z    3330adb9-00ce-11e6-9c08-d79a6bc84748    Calling phantom:  /var/task/phantomjs [ '/var/task/phantomjs-script.js' ]
2016-04-12T16:47:12.236Z    3330adb9-00ce-11e6-9c08-d79a6bc84748    Error: spawn EACCES
    at exports._errnoException (util.js:870:11)
    at ChildProcess.spawn (internal/child_process.js:298:11)
看起来lambda无法访问幻影二进制文件。 我有没有办法给这个函数更多的权限


谢谢

出现此问题的原因可能是您将本地构建的二进制文件部署到AWS Lambda,否则它将无法执行它们(除非你非常幸运)

如果要调用任何可执行文件或使用二进制文件附带的库,则需要在带有Amazon Linux的EC2机器上编译它们,并在Lambda函数中使用结果


如果您已经这样做了,也要确保您使用的二进制文件是可执行的(您可以通过调用
chmod 777您的可执行文件
来执行)。我猜你已经这么做了(在你的例子中,phantomjs也应该注意这一点),但这是每个人的主要错误来源。

这有点老了,但我刚刚解决了一个相关问题,想在这里为后人发布关键文章。除了@birnbaum所说的需要在Amazon linux机器上编译的二进制文件之外,您还需要在linux机器上捆绑您的可部署包(zip文件)!如果您不这样做,运行时将能够找到您的二进制文件,但无法创建实际的浏览器实例。

其中一个文件缺少执行权限,因此chmod 777工作正常。问题是复杂的,因为我是从windows计算机上载的。让它在linux虚拟机上工作,然后从那里发布,这使整个过程变得更容易。这也是为其他尝试这样做的人提供的另一个技巧。如果phantom正在生成任何类型的输出,请确保将其保存到/tmp/文件夹:)