Macで AWS Lambdaで動く Python3 のライブラリを用意する

pyenv, python3, lambda-uploader で AWS Lambda にアップロードするの続き。

Python の numpy や pandas, beautifulsoupなど、Cで作られているライブラリを AWS Lambda で動かしたい。

しかし、Macから lambda-uploader でアップしたらエラーがでてしまった。

“errorMessage”: “Unable to import module ‘lambda_function'”

というエラーがでた。ライブラリが読み込めていないとのこと。

こレラのライブラリは Mac 用でビルドされており、Lambda環境と違うことが原因です。

失敗したやり方は、以下。

vim requirements.txt
beautifulsoup4

あとは、lambda.json, lambda_function.py など必要なものを書く。

アップロードする。

 lambda-uploader

こうしたら自分の AWS Lambda に関数が登録されています。

しかし、テストを実行してみても上記エラーが表示されてしまいました。

成功したやり方

C で作られているライブラリを Docker を使ってコンパイルします。
lambdaを開発しているディレクトリで、以下を実行。

docker run --rm -v $(pwd):/work -w /work python:3.6 pip install -r requirements.txt -t .

すると フォルダ内に以下2つのディレクトリが作成されています。

beautifulsoup4-4.6.0.dist-info
bs4

この2つを含めて、ディレクトリ内をまとめて zip で固めます。

zip -r lambda_function.zip ./

lambda_function.zipが作成されました。
これを lambda-uploader を使ってアップロードのみで実行します。

lambda-uploader --no-build

これで問題なく動きました。

参考

Mac だけど Python で AWS Lambda したい!

http://dev.classmethod.jp/etc/aws-lambda-paramiko/

スポンサーリンク
ad
ad

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
ad