【问题标题】:Can't get phantomjs to work on aws lambda无法让 phantomjs 在 aws lambda 上工作
【发布时间】:2018-01-03 03:43:12
【问题描述】:

我正在尝试使用 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 无法访问幻像二进制文件。 有什么办法可以让函数获得更多权限吗?

谢谢

【问题讨论】:

    标签: ubuntu amazon-web-services phantomjs aws-lambda


    【解决方案1】:

    此问题的原因可能是您将本地构建的二进制文件部署到 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 错误的主要来源。

    【讨论】:

    • 其中一个文件缺少执行权限,因此 chmod 777 有效。问题很复杂,因为我是从 Windows 机器上传的。让它在 linux vm 上运行然后从那里发布使整个过程更容易。
    • 对于其他尝试这样做的人来说也是另一个提示。如果幻影产生任何类型的输出,请确保将其保存到 /tmp/ 文件夹:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 2015-04-14
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多