2016-03-27 12 views
7

Python 2.7ランタイムのAWSラムダスクリプトを実行しています。それはgrequestsライブラリをインポートするために開始します初期化しますが、失敗した時はいつでも、それはgeventへの依存だがしかし、:AWS Lambdaのgrequestsをインポートできません

Gevent is required for grequests.

(それがgeventを必要と知っているので)それが成功しgrequestsライブラリを見つけることですようだが、失敗しました。

pip install --ignore-installed grequests -t .

pip install --ignore-installed grequests -t ./lib

pip install --ignore-installed gevent -t .

pip install --ignore-installed gevent -t ./lib

そして私は、ディレクトリの内容を圧縮し、AWSあたりにアップロード:私がこれまで試したどのような

ここの指示:http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

私はラムダがgeventを見つけることができなくても問題はないが、他のデフォルト以外のライブラリを見つけることができます。

+0

ここで、「pip install」を呼び出していますか?あなたのラムダスクリプトで? – helloV

+0

これを元の投稿に追加しますが、端末からこれを呼び出し、次の手順に従ってAWSにアップロードするためにコンテンツを圧縮しています:http://docs.aws.amazon.com/lambda/latest/dg/ lambda-python-how-to-create-deployment-package.html –

答えて

2

をAmazon Linuxインスタンスにsrcからビルドしなければなりませんでした。あなたがアップロードしたLambda zipにそれらを含めるだけで、誰かが必要な場合は、得られたファイルをzipに入れます。あなたは上司のようにコンカレントにすべきです。

https://github.com/brandonmp/aws-lambda-grequests

+0

私の問題は、関連のない問題に遭遇していたAmazon Linuxでのgrequests全体をコンパイルしようとしていたようです。 'gevent'をコンパイルするだけで動作します。ありがとう! –

3

Geventはlibevに基づいているため、pip経由でインストールするとバイナリをコンパイルする可能性が高くなります。

AWS Lambdaで実行可能にするには、Amazon Linux用にコンパイルされたバイナリを配備する必要があります。 Amazon Linuxを実行しているEC2インスタンスにデプロイパッケージを構築することで、そのようにすることができます。

this answerthis tutorialもチェックしてください。

+0

ありがとうございます。私はEC2のインスタンスをスピンアップしてそこにインストールし、結果を私のレポに含めることでこの作業を試みました。しかし、私は同じ問題があります。 –

+0

EC2でコードを実行する際に同じ問題がありますか?はいの場合、Lambdaと同じように動作する必要があるため、問題をデバッグすることをお勧めします。ラムダでこれを直接デバッグすることは本当の苦痛です。 – birnbaum

+0

楽しいことですが、これは 'lxml'ライブラリをLambdaで動かすための解決策です。したがって、誰かが検索している場合は、サーバー上でコンパイルするだけです。 –

関連する問題