このページではPython + AWS Lambda + AWS API Gateway でREST APIを動作させる前に Flask + AWSGI で作ったスクリプトがLambdaで動作するかを確認します。
Lambda関数を作成する
新規 Lambda関数の作成手順については割愛します。
以下を参考にしていただければ簡単です。
コンソールで Lambda の関数の作成
Lambda関数に作成したスクリプトとpipのパッケージを登録する
このページでは以下の記事で準備したスクリプトを登録します。
Python+Flask+AWSGI プログラムの作成
AWS Lambdaでpipのパッケージを利用するには、自分で各種ファイルをアップロードしてやる必要があります。
ざっくりとした手順は以下の通り。
- PCに空のディレクトリを作成する。
- 1.で作成したディレクトリに
pip install package_name -t ./で必要なpipパッケージをインストールする。 - 1.で作成したディレクトリの直下に「lambda_function.py」を作成する。
- zipファイルにまとめる。ここでは1.のディレクトリを圧縮するのではなく、ディレクトリの中身を圧縮する。(zipファイルの直下にlambda_function.pyが来るようにする)
- AWS マネジメントコンソールのLambda関数画面からzipファイルをアップロードする。
pipで使用している-tはインストール先を指定するためのスイッチです。
zipファイルのアップロードについては、このページ下部の参考URLに詳細が掲載されています。
POSTリクエストの内容を返せるかテストする
API Gatewayのルールに沿った応答を返せるか、Lambda関数画面からテストすることができます。
手順は以下の通り。
- AWS マネジメントコンソールのLambda関数画面で「Test」ボタンから新規テスト作成画面(テストイベントの設定)を開く。
- 「新しいテストイベントの作成」を選択し、イベントテンプレートから「apigateway-aws-proxy」を選択する。
- 表示されたJSONの"path"の値を"/"にする。
- 「作成」ボタンをクリックし、テストを実行する。
上手くいけば以下のような内容のデータがテスト結果に出力されます。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 プロキシ統合を設定する