2017-09-12 19 views
3

AWSラムダでnumpyを使用するための回避策を探しています。私はEC2だけを使用していないので、誰かが感謝される提案があれば、このためにラムダ。現在、エラーを取得:AWSラムダでnumpyを使用

は、zipファイルを作成し、機能コードをアップロードする単調なラムダを使用して名前を「マルチアレイ」

をインポートすることはできません。私が使っているモジュールはすべて、pip installとrequirements.txtファイルを使ってnumpyを含むlambda関数のルートの中のpython_modulesというフォルダにインストールされています。

+0

おそらくモジュールをインストールしておくか、ラムダ関数パッケージのルートに直接シンボリックリンクする必要があります。また、すべての依存関係もそこにあることを確認してください。 –

+0

私はあなたが何を得ているのか知っていますが、env変数がそれらを指しているので、すべてのモジュールがうまく動作します。 –

+0

万が一この問題を解決しましたか?私はPython 3.6の正確な問題がありますか? – JavaCake

答えて

1

リンクではなく、ここでの解決策を含むように更新:、私はホストから直接python3.6 virtualenvのの中から、私の展開パッケージを作成するのではなく、しなければならなかったことがわかった

多くの努力の後機械。私はUbuntu 16.04ドッカー画像の中で次のことをしました。これはあなたがpython3.6、virtualenvとawscliをすでにインストール/設定していて、ラムダ関数コードが〜/ lambda_codeディレクトリにあると仮定しています:

1)cd ~(ホームディレクトリにvirtualenvをビルドします)

2)virtualenv venv --python=python3.6(仮想環境の作成)

3)source venv/bin/activate(仮想環境を有効化)

4)pip install numpy

5)cp -r ~/venv/lib/python3.6/site-packages/* ~/lambda_code(インストールされているすべてのパッケージをlambda_codeディレクトリのルートレベルにコピーします。これは、いくつかの不要なファイルが含まれますが、必要であれば、あなたはそれらの自分自身を削除することができます)

6)cd ~/lambda_code

7)zip -r9 ~/package.zip .(ラムダパッケージをジップアップ)

8)aws lambda update-function-code --function-name my_lambda_function --zip-file fileb://~/package.zip(AWSへのアップロード)

ラムダ関数はnumpyを問題なくインポートできるようになりました。

すぐに使えるソリューションが必要な場合は、ラムダ機能を展開するためにサーバーレスを使用することを検討できます。上記の解決策を見つける前に、私はガイドhereに従い、python3.6ラムダ関数でnumpyを正常に実行することができました。