AWS LambdaでPython+Flask環境を作成する
AWS Lambdaは、サーバーレスコンピューティングサービスであり、アプリケーションやバックエンドサービスをサーバーレスアーキテクチャで実行することができます。この記事では、AWS Lambdaを使用してPython+Flask環境を作成する方法を説明します。
前提条件
- AWSアカウントを持っていること
- Python 3.8以上がインストールされていること
1. プロジェクトディレクトリの作成
まず、プロジェクト用のディレクトリを作成し、そのディレクトリ内で作業を行います。
$ mkdir python-flask-lambda
$ cd python-flask-lambda
2. 仮想環境の作成
pipはPythonのパッケージ管理システムで、多くのPythonパッケージを簡単にインストールできます。pipがインストールされていることを確認し、次のコマンドを実行してvirtualenvをインストールします。
プロジェクトディレクトリ内で、Pythonの仮想環境を作成し、アクティベートします。
$ pip install virtualenv
$ virtualenv venv
$ source venv/bin/activate
3. 必要なパッケージのインストール
次に、FlaskとZappaを含む必要なパッケージをインストールします。
$ pip install Flask zappa
4. Flaskアプリケーションの作成
プロジェクトディレクトリにapp.pyという名前のファイルを作成し、以下のコードを記述します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello from AWS Lambda and Flask!'
if __name__ == '__main__':
app.run()
ローカルでの起動方法
Flaskがアプリケーションを見つけるために必要な環境変数を設定します。以下のコマンドを実行して環境変数を設定してください。コマンドは、使用しているシェルによって異なります。
- Bash (Linux/macOS)
$ export FLASK_APP=app.py
以下のコマンドを実行してFlaskアプリケーションをローカルで起動します。
$ flask run
デフォルトでは、アプリケーションは 127.0.0.1(localhost)のポート5000で実行されます。起動が成功すると、以下のようなメッセージが表示されます。
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
5. Zappaの設定
Zappaの設定ファイルzappa_settings.jsonをプロジェクトディレクトリに作成し、以下の内容を記述します。
{
"dev": {
"app_function": "app.app",
"aws_region": "us-west-2",
"profile_name": "default",
"project_name": "python-flask-lambda",
"runtime": "python3.8",
"s3_bucket": "your-s3-bucket-name"
}
}
aws_regionとs3_bucketを適切な値に置き換えてください。
6. aws cliの設定
AWS CLI をインストールして設定すると、zappa が自動的に認証情報を読み取ります。まず、AWS CLI をインストールします:
pip install awscli
次に、以下のコマンドを実行して AWS CLI を設定します:
aws configure
これにより、AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY を入力するように求められます。入力後、設定は ~/.aws/credentials ファイルに保存されます。zappa はこのファイルから認証情報を読み取ります。
7. Lambda関数のデプロイ
Zappaを使用して、Lambda関数をデプロイします。
$ zappa deploy dev
正常にデプロイされている場合、「Hello from AWS Lambda and Flask!」というメッセージが表示されます。
8. Lambda関数の更新
アプリケーションを更新した場合、以下のコマンドを実行してLambda関数を更新できます。
$ zappa update dev
9. Lambda関数の削除
プロジェクトを削除する場合、以下のコマンドを実行してLambda関数と関連リソースを削除できます。
$ zappa undeploy dev
まとめ
この記事では、AWS LambdaでPython+Flask環境を作成する方法を紹介しました。AWS LambdaとZappaを使用することで、簡単にサーバーレスなWebアプリケーションをデプロイできます。この方法を試して、サーバーレスアーキテクチャの利点を活用してみてください。
以下のサイトでは他にもpythonとFlaskとAWSについて解説しています。