zappaを使ってflaskアプリをデプロイする。
anacondaで仮想環境を作成、flaskを入れて適当なアプリを作る。
hello.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello, World!</p>" if __name__ == "__main__": app.run(debug=True)
問題なくローカルで動作することを確認。
次にzappaを入れる。
anacondaではパッケージが出てこなかったのでpipを使う。
pip install zappa
AWSの認証情報が書かれたファイルがMacに存在することを確認。
認証情報とはIAMユーザかRootユーザのアクセスキーとシークレットキーのことである。
cat ~/.aws/config
zappaの初期化をする。
zappa init
—
以下のエラーが発生する場合には、環境変数を設定すれば解決した。

StackOverflowで調べてみると、環境変数VIRTUAL_ENVに「which python」で得られる結果の1部(仮想環境の情報)を追加すれば良いらしい。
https://stackoverflow.com/questions/46164054/using-zappa-as-a-conda-user
多分、zappaはvirtualenv前提で作られているから、anacondaの場合には手動で環境変数を追加する必要があると思われる。
export VIRTUAL_ENV=/opt/anaconda3/envs/serverless
—
対話形式で質問に答えていくと以下のような設定ファイルができる。
{ "dev": { "app_function": "hello.app", "profile_name": "eb-cli", "project_name": "flask-serverles", "runtime": "python3.7", "s3_bucket": "zappa-bqff0mxbf" } }
デプロイしてみる。
zappa deploy dev
リージョン指定のエラーが出る。
botocore.exceptions.NoRegionError: You must specify a region.
設定ファイルにリージョンを追記する。
"app_function": "hello.app", "aws_region": "us-west-2", "profile_name": "eb-cli",
再度デプロイすると成功した。