LoginSignup
1
1

ZappaでFlaskをLambdaにデプロイ

Posted at

はじめに

ご覧いただきありがとうございます!
zappaを使ってLambdaにデプロイする方法を自分の備忘録も兼ねて書いてみました。
初心者なので、間違いがあればご指摘いただけると幸いです。

zappaとは?

zappaとは、AWS Lambda上でFlaskやDjangoなどのWebアプリケーションを簡単にデプロイできるフレームワークです。
zappaを使うとLambda関数やAPI Gatewayの設定など、複雑なAWSリソースのセットアップを自動的に行なってくれるため、手動で設定する手間を省いてくれます。

1. Flaskをインストール

pythonの仮想環境を用意してFlaskをインストールします。

$ pipenv install Flask

2.ファイルの作成

"Hello world!"を表示するファイルを用意します。

hello.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
   return 'Hello, World!'

if __name__ == '__main__':
   app.run(debug=True)

3. zappaをインストール

※AWS CLIはアクセスキーを作成し、事前にインストールしておきます。

$ pipenv install zappa

4. zappa設定ファイルを生成

$ zappa init

デプロイ環境の名前を設定します。何も指定しなければdevになります。
今回はそのままEnterで進みます。

What do you want to call this environment (default 'dev'): 

ソースコードをアップロードするS3の名前を設定します。何も指定しないとランダムで生成された名前になります。こちらもこのままEnterで進みます。

Your Zappa deployments will need to be uploaded to a private S3 bucket.
If you don't have a bucket yet, we'll create one for you too.
What do you want to call your bucket? (default 'zappa-********'): 

次にFlaskアプリの起動ファイルを選択します。
デフォルトで指定してくれているので、こちらもそのままEnterで進みます。

It looks like this is a Flask application.
What's the modular path to your app's function?
This will likely be something like 'your_module.app'.
We discovered: hello.app
Where is your app's function? (default 'hello.app'): 

次にAWS Lambda関数を異なるAWSリージョンに展開するかどうか聞かれますが、今回は特にその必要はないためこのままEnterを押します。

You can optionally deploy to all available regions in order to provide fast global service.
If you are using Zappa for the first time, you probably don't want to do this!
Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]: 

最終確認です。問題なければこのままEnterを押します。

Okay, here's your zappa_settings.json:

{
    "dev": {
        "app_function": "hello.app",
        "aws_region": "ap-northeast-1",
        "profile_name": "default",
        "project_name": "zappa-app",
        "runtime": "python3.11",
        "s3_bucket": "zappa-********"
    }
}

Does this look okay? (default 'y') [y/n]: 

設定が完了するとアプリのディレクトリ内に「zappa_settings.json」が作成されました。
これでzappaの設定は完了です。

5. AWSへデプロイする

引数に環境名(今回はdev)を入れて、以下のコマンドを実行します。

$ zappa deploy dev

デプロイが成功すると以下のURLが表示されます。
xxxxxの部分はデプロイ毎に変化します。

Deployment complete!: https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/dev

ブラウザで URL にアクセスすると"Hello, World!"と表示されているはずです。
これでデプロイ完了です👏
ちなみにソースコードを変更した場合は、以下のコマンドで更新すればOKです。

zappa update dev

その他コマンド

現在のデプロイ状態の確認

zappa status 

ログの確認
終了する時は Ctrl + C

zappa tail

デプロイしたアプリを削除する場合

zappa undeploy 

最後に

最後までご覧いただきありがとうございます!
zappaを使ってLambdaにデプロイする方法を紹介しました。
サーバレスなアプリを簡単にデプロイできるので、とても便利ですね!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1