🔥
[爆速] ZappaでAPI Gateway + Lambdaにデプロイ!
1.はじめに
API Gateway + LambdaのアーキテクチャでREST API作成したりするユースケースは多いかと思います。そんな時に便利なライブラリないかな〜と探していたら 「Zappa」 というものを見つけました✊
今回は、「Zappa」を使用して実際にAWSにデプロイしてみたいと思います!
2.Zappa とは?
Pythonのサーバーレスフレームワーク
WSGIアプリケーションに対応しているので、lambdaにFlask/Django等のWSGIアプリケーションをデプロイするするのに便利ですね。手軽にデプロイしたいときは、SAM や Serverless Frameworkより良いかと思います。
3.ハンズオン
早速やっていきましょう
3.1.Zappaのインストール
pip でインストールできます
$ pip install zappa
3.2.初期設定する
とりあえず作業用フォルダを作成
$ mkdir it-training
$ cd it-training
以下のコマンド実行で初期化します
$ zappa init
- 基本 defaultの設定でOKですが、「Where is your app's function?:」 の部分は、ご自身のアプリファイルの名前を指定してあげてください。
- 今回は、「app.app」 でいきたいと思います
- Flaskアプリケーションの起動ファイルを設定してる感じですね。
初期設定が終わると zappa_settings.json
が作成されています
$ cat zappa_settings.json
{
"dev": {
"app_function": "app.app",
"aws_region": "ap-northeast-1",
"profile_name": "default",
"project_name": "it-trarining",
"runtime": "python3.8",
"s3_bucket": "zappa-6jgjbjdyx"
}
}
3.3.実行するファイルを作成する
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'hello world!'
if __name__ == '__main__':
app.run()
3.4.デプロイする
初回のデプロイ
$ zappa deploy dev
※ デプロイでうまくいってなさそうなら cloudwatchのロググループから辿ってエラーを見に行く
2回目以降は以下のコマンドで
$ zappa update dev
うまくデプロイできると以下のような出力が出てきます
Your updated Zappa deployment is live!: https://XXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/dev
なんとAPIGatewayの設定も勝手にやってくれてます。( まじ優秀 )
4.発展
ここまできたら細かい設定をしたくなるかと思います。
- APIGatewayの設定 (認証キーとかもろもろ)
- SSL証明書の設定
- cloudwatchの詳細
- cache
- COSRなどなど
「zappa_settings.json」 を編集することで細かいところまで設定できるのでぜひ試してみてくださいませ。
JSONが嫌な人はyamlでも設定できるみたい 👀
dev:
app_function: your_module.your_app
s3_bucket: your-code-bucket
events:
- function: your_module.your_function
event_source:
arn: arn:aws:s3:::your-event-bucket
events:
- s3:ObjectCreated:*
$ zappa deploy dev -s my-custom-settings.yml
5.終わりに
「Zappa」 便利です。快適な開発ライフを✨
Discussion