AWS LambdaでPython+Flask環境を作成する

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アプリケーションをデプロイできます。この方法を試して、サーバーレスアーキテクチャの利点を活用してみてください。