2016-04-12 19 views
4

に動作させることはできません私は、ノード・ラムダとこまごまとを使用してphantomjsを実行しようとしている私は、ウェブ上で発見、主 https://github.com/justengland/phantom-lambda-templateがphantomjsは、AWSのラムダ

私はnode43とノード・ラムダを展開し、いくつかの問題を抱えていました最新のソースを手作業でインストールすることは、その点で助けになったようです。

今はラムダ関数を実行するのに問題があります。私は得る

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) 

のように見えるのは、ファントムバイナリにアクセスすることはできません。 これを行うための権限を与える方法はありますか?

おかげ

答えて

4

この問題の理由は、あなたがAWSラムダにローカルに構築されたバイナリを展開していることかもしれません。 Lambda requires it's binaries to be compiled for Amazon Linux、それ以外の場合は実行できません(スーパーラッキーな場合を除きます)。

実行ファイルを呼び出している場合や、バイナリに付属のライブラリを使用している場合は、Amazon LinuxでEC2マシンでコンパイルし、ラムダ関数の結果を使用する必要があります。 This is a very basic tutorial

既に行っている場合は、使用しているバイナリが実行可能であることも確認してください(これはchmod 777 your_executableを呼び出して行うことができます)。私はあなたがすでにそれをしていると思います(あなたのケースでは、phantomjsもこの点を考慮する必要があります)が、これがEACCESの主なエラー源です。

+0

ファイルの1つに実行権限がないため、chmod 777が機能しました。 Windowsマシンからアップロードしているため、問題が複合化されました。 linuxのVM上で動作させることで、そこからパブリッシュすることで、プロセス全体が簡単になります。 – Marcom

+0

また、これをやろうとしている他の人のためのヒント。ファントムが何らかの出力を生成している場合は、それが/ tmp /フォルダに保存されていることを確認してください:) – Marcom

0

これは少し古くなっていますが、私は関連する問題を解決したばかりであり、後世のためにここに鍵の記事を掲載したいと考えています。 @birnbaumがAmazon Linuxマシンでコンパイルする必要があるバイナリについて述べたことに加えて、Linuxマシンに展開可能なパッケージ(zipファイル)をバンドルする必要もあります。そうしないと、ランタイムはバイナリを見つけることができますが、実際のブラウザインスタンスは作成できません。