2021年10月30日土曜日

Python+Flask+AWSGI プログラムの動作確認

このページではPython + AWS Lambda + AWS API Gateway でREST APIを動作させる前に Flask + AWSGI で作ったスクリプトがLambdaで動作するかを確認します。

Lambda関数を作成する

新規 Lambda関数の作成手順については割愛します。
以下を参考にしていただければ簡単です。
コンソールで Lambda の関数の作成

Lambda関数に作成したスクリプトとpipのパッケージを登録する

このページでは以下の記事で準備したスクリプトを登録します。
Python+Flask+AWSGI プログラムの作成

AWS Lambdaでpipのパッケージを利用するには、自分で各種ファイルをアップロードしてやる必要があります。
ざっくりとした手順は以下の通り。

  1. PCに空のディレクトリを作成する。
  2. 1.で作成したディレクトリにpip install package_name -t ./ で必要なpipパッケージをインストールする。
  3. 1.で作成したディレクトリの直下に「lambda_function.py」を作成する。
  4. zipファイルにまとめる。ここでは1.のディレクトリを圧縮するのではなく、ディレクトリの中身を圧縮する。(zipファイルの直下にlambda_function.pyが来るようにする)
  5. AWS マネジメントコンソールのLambda関数画面からzipファイルをアップロードする。

pipで使用している-tはインストール先を指定するためのスイッチです。
zipファイルのアップロードについては、このページ下部の参考URLに詳細が掲載されています。

POSTリクエストの内容を返せるかテストする

API Gatewayのルールに沿った応答を返せるか、Lambda関数画面からテストすることができます。
手順は以下の通り。

  1. AWS マネジメントコンソールのLambda関数画面で「Test」ボタンから新規テスト作成画面(テストイベントの設定)を開く。
  2. 「新しいテストイベントの作成」を選択し、イベントテンプレートから「apigateway-aws-proxy」を選択する。
  3. 表示されたJSONの"path"の値を"/"にする。
  4. 「作成」ボタンをクリックし、テストを実行する。

上手くいけば以下のような内容のデータがテスト結果に出力されます。pathの値が正しくないと404エラーが返ります。
テストテンプレートのJSONの内容についてはこのページ下部の参考URLに詳細が掲載されています。

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
    "body": "..."
}

以上で動作確認まで完了です。
この後 API Gatewayの設定をしていきます。

参考

.zip ファイルアーカイブで Python Lambda 関数をデプロイする
コンソールで Lambda の関数の作成
API Gateway で Lambda プロキシ統合を設定する

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

mbox方式からMaildir方式への変更

概要 CentOS7にPostfixとDovecotがをインストールしましたが、メールの保存形式が「mbox」方式のままです。 サーバのメールをクライアントPCで閲覧したい。(dovecot, imap) これを「Maildir」方式に変更します。 mbox と Ma...