2019-11-13

zappaのインストールメモ

zappaをanacondaで作成した仮想環境にインストールした際に、zappa init でちょっと手間取ったところがあるのでメモ書きです。

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
ネットに出てくる情報は、virtualenv を使ってってのが多いですが、Anaconda(GUI)で仮想環境作ってもOKです。ただ、Anaconda(GUI)の場合、デフォルトではzappaのインストールができなかったので、pipコマンド使いました。

AWSで権限の設定をしておく
これについての情報が非常に少なく、もしかしたら私が勘違いしているのかもしれませんが、zappaを使うということは、当然LambdaとかAPIGatewayなどをアクセスする権限(ロール)の設定が必要なはずで、このあたりの設定が不十分だと、zappa でのデプロイ時に権限がらみのエラーが出ます。とりあえず下記のロールを追加しとくとエラーはでないでしょう。
  •  AWSLambdaFullAccess
  •  IAMFullAccess
  •  AWSLambdaDynamoDBExecutionRole
  •  AmazonAPIGatewayAdministrator
  •  AWSCodeDeployRoleForLambda
  •  AWSLambdaExecute
  •  AWSCloudFormationFullAccess
なお、IAMのポリシー設定についてはGitHubで議論があります。

Zappa init で初期設定ファイルを作る

$ zappa init
このコマンドを実行することで、zappa_settings.js というファイルができます。
ここで以下のようなエラー出たときの対処法を書いておきます。

エラー:zappa init error: "Zappa requires an active virtual environment
このメッセージが出たときは、環境変数でVIRTUAL_ENV を設定してください。
(Windowsの場合)
$ set VIRTUAL_ENV=c:\users\xxxx\appdata\local\continuum\anaconda3\envs\flaskenv
エラー:zappa Init error 'utf8' codec can't decode byte 0x**
このエラーは単にディレクトリの(権限の?)問題だけのようです。(自分がこれから作成しようとしている)Pythonのプロジェクトファイルのフォルダに移動してみてから initを再度実行してみてください。

zappa_settings.jsonファイルの修正
必要に応じてファイルを修正しましょう。ここの肝は、project_nameという変数を変えることで、別プロジェクトのような扱いになります。つまり異なるLambda関数となり、APIGatewayでのURLも変わることになります。

zappaコマンド(デプロイ、更新、削除)
インストールに成功したら、あとの操作は下記のようになります。
(はじめてプロジェクトをデプロイする場合)
$ zappa deploy dev
(更新する場合)
$ zappa update dev
(削除する場合)
$zappa undeploy dev








0 件のコメント:

コメントを投稿