見出し画像

「動かして学ぶ!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用のユーザーにドメイン関連の設定権限を付与します。

スクリーンショット_2021-06-29_2_01_38

注意したい点としては、3点です。

us-east-1 で証明書が発行されていないとエラーが起きる
・サブドメイン無しのドメインを指定するとエラーが起きる
・zappaの実行IAMの権限がサーバレス環境の構築権限(Lambdaなど)しか設定されていないので、そのままコマンドを実行するとpermissionエラーが発生する


最後に

これまでLambdaを単体で使うことがあったのですが、今回、zappaやDynamoDBは使ったことがなかったので、非常に勉強になりました。読み終えてからは、これまで作っていたFlaskのアプリをzappaで動かせるようにしたり色々試しています。またzappaを使って見て、AWSのサーバレス環境というものが徐々に理解できたこともあり、serverless framework に再チャレンジしています。

この記事が参加している募集

いつもありがとうございます! いただいたサポートは開発費(サーバー運用費)などに使わせていただきます!