AWSの環境設定
ここは大前提なので書かれてないことが多いですが、awsを使うので当然、AWS周りの環境設定は必要です。
・aws-cliをインストール
・Lambdaを動かすアカウントを作成しておき、Access Key などをメモっておく
・aws configureでAccess Key ID、Secret Access Key、region name、output formatの4つを設定する
zappa用の仮想環境の構築
仮想環境作って、下記のようにインストールしましょう。
$ pip install flask $ pip install zappa
AWSで権限の設定をしておく
これについての情報が非常に少なく、もしかしたら私が勘違いしているのかもしれませんが、zappaを使うということは、当然LambdaとかAPIGatewayなどをアクセスする権限(ロール)の設定が必要なはずで、このあたりの設定が不十分だと、zappa でのデプロイ時に権限がらみのエラーが出ます。とりあえず下記のロールを追加しとくとエラーはでないでしょう。
- AWSLambdaFullAccess
- IAMFullAccess
- AWSLambdaDynamoDBExecutionRole
- AmazonAPIGatewayAdministrator
- AWSCodeDeployRoleForLambda
- AWSLambdaExecute
- AWSCloudFormationFullAccess
なお、IAMのポリシー設定についてはGitHubで議論があります。
Zappa init で初期設定ファイルを作る
$ zappa init
ここで以下のようなエラー出たときの対処法を書いておきます。
エラー:zappa init error: "Zappa requires an active virtual environment
このメッセージが出たときは、環境変数でVIRTUAL_ENV を設定してください。
(Windowsの場合) $ set VIRTUAL_ENV=c:\users\xxxx\appdata\local\continuum\anaconda3\envs\flaskenv
このエラーは単にディレクトリの(権限の?)問題だけのようです。(自分がこれから作成しようとしている)Pythonのプロジェクトファイルのフォルダに移動してみてから initを再度実行してみてください。
zappa_settings.jsonファイルの修正
必要に応じてファイルを修正しましょう。ここの肝は、project_nameという変数を変えることで、別プロジェクトのような扱いになります。つまり異なるLambda関数となり、APIGatewayでのURLも変わることになります。
zappaコマンド(デプロイ、更新、削除)
インストールに成功したら、あとの操作は下記のようになります。
zappa_settings.jsonファイルの修正
必要に応じてファイルを修正しましょう。ここの肝は、project_nameという変数を変えることで、別プロジェクトのような扱いになります。つまり異なるLambda関数となり、APIGatewayでのURLも変わることになります。
zappaコマンド(デプロイ、更新、削除)
インストールに成功したら、あとの操作は下記のようになります。
(はじめてプロジェクトをデプロイする場合) $ zappa deploy dev (更新する場合) $ zappa update dev (削除する場合) $zappa undeploy dev