无法让phantomjs在aws lambda上工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法让phantomjs在aws lambda上工作相关的知识,希望对你有一定的参考价值。
我正在尝试使用node-lambda执行phantomjs,我在网上找到的碎片主要是https://github.com/justengland/phantom-lambda-template
我在使用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。 Lambda requires it's binaries to be compiled for Amazon Linux,否则它无法执行它们(除非你是超级幸运的)。
如果您正在调用任何可执行文件或使用二进制文件附带的库,则需要在使用Amazon Linux的EC2计算机上编译它们,并使用Lambda函数中的结果。 This is a very basic tutorial。
如果您已经这样做了,还要确保您使用的二进制文件是可执行的(您可以通过调用chmod 777 your_executable
来执行此操作)。我猜你已经这样做了(在你的情况下,phantomjs也应该照顾这个),但这是EACCES的主要错误来源。
这有点老了,但我刚刚解决了一个相关的问题,并希望在此发布关键部分以供后人使用。除了@birnbaum所说的关于需要在Amazon linux机器上编译的二进制文件之外,还需要在Linux机器上捆绑可部署软件包(zip文件)!如果不这样做,运行时将能够找到您的二进制文件,但不能创建实际的浏览器实例。
以上是关于无法让phantomjs在aws lambda上工作的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NodeJS 在 AWS Lambda 上运行 PhantomJS
如何在 Python 中从 AWS 中的 lambda 函数返回二进制数据?