[Python 3.6] Zappaを動かすコツ

AWSのLambdaをPythonで書きたい場合、Serverlessも便利ですがZappaならもっと簡単です。ただしセットアップに(いくつか)落とし穴があります。

検証環境

  • Python 3.6.4
  • pyenv + venv
  • High Sierra

pipを9.0.1にする

zappaを実行すると、
AttributeError: 'module' has no attribute 'get_installed_distributions'
というエラーが出る場合があります。pipのバージョンを下げることで解消されます。

pip install pip==9.0.3

詳細
https://github.com/Miserlou/Zappa/issues/1471

Zappaを0.45.1にして、venvにインストールする

zappaでデプロイしても、

Error: Warning! Status check on the deployed lambda failed. A GET request to '/' yielded a 502 response code.

のようにエラーになってしまう場合があります。zappa tailしてみると、

Unable to import module 'handler': No module named builtins

というようなエラーが出ている場合は、zappaのバージョンを下げることで解消されます。
また、次のようなエラーが出る場合は、

Unable to import module 'handler': attempted relative import with no known parent package

venvの中でpip install zappa==0.45.1とすることで解消されます。

詳細
https://github.com/Miserlou/Zappa/issues/1222