「動かして学ぶ!Pythonサーバレスアプリ開発入門」を読んでみた ~ Day 3 ~
3日目の今日は、サーバレス環境Deployをしていきました。
1日目
「動かして学ぶ! Pythonサーバレスアプリ開発入門」を読んでみた ~ Day 1 ~
2日目
「動かして学ぶ! Pythonサーバレスアプリ開発入門」を読んでみた ~ Day 2 ~
---------------
Chapter 9
zappaというライブラリを使って、サーバレス環境にDeployをしていきます。
ちなみに、zappaはflask 2.0非対応です。
依存するパッケージのバージョンがそれぞれ異なっているためで、
zappaは、 werkzeug < 1.0 に対応、
flask2.0以降は、werkzeug >= 2.0 に対応ということで、flask2.0とは共存できませんでした。
zappaとflaskを同時に動かす訳じゃないから、Deployのときだけ、仮想環境切り替えればいいかなとも思いましたが、さすがにめんどそうなので諦めました。
ということで、ここまでflask2.0でやってきましたが、ここでflask1.1.4にバージョン変更しました。
---------------
Chapter 10
Chapter 11
投稿数レポートのBotを作成します。
google spread sheet, slack を繋ぐ機能で、応用はかなり効く内容になっていると思いました。
---------------
Chapter 12
zappaの機能解説です。
オマケ感のある章で解説はあっさりです。
実務で使いそうなところとしては、独自ドメインを設定する「SSL証明書を導入する」という zappa certify コマンドです。
書籍にはほぼ設定値のみの記載になっていますので、少し手順を記載します。
zappa_setting.json のサンプル
{
"dev": {
"certificate_arn": "arn:aws:acm:us-east-1:123456",
"domain": "www.your-domain.com",
}
}
1. 所持しているドメインをRoute53に設定
2. us-east-1 のリージョンで、Certificate Managerから証明書を発行
( *.your-domain.com に対して証明書を発行しました)
3. 発行した際に発行されるARNをzappa_setting.json の certificate_arnに記載
4. zappa_setting.json の domain に何かしらサブドメインあるドメインを指定( www.your-domain.comやapp.your-domain.comなど)
5. 実行前に、IAMで設定したzappa用のユーザーにドメイン関連の設定権限を付与します。
注意したい点としては、3点です。
・us-east-1 で証明書が発行されていないとエラーが起きる
・サブドメイン無しのドメインを指定するとエラーが起きる
・zappaの実行IAMの権限がサーバレス環境の構築権限(Lambdaなど)しか設定されていないので、そのままコマンドを実行するとpermissionエラーが発生する
最後に
これまでLambdaを単体で使うことがあったのですが、今回、zappaやDynamoDBは使ったことがなかったので、非常に勉強になりました。読み終えてからは、これまで作っていたFlaskのアプリをzappaで動かせるようにしたり色々試しています。またzappaを使って見て、AWSのサーバレス環境というものが徐々に理解できたこともあり、serverless framework に再チャレンジしています。
この記事が参加している募集
いつもありがとうございます! いただいたサポートは開発費(サーバー運用費)などに使わせていただきます!