✨
Python で AWS Lambda 使う時に割と面倒だったので手軽に Upload できるように構成を作っておく
構成
最終的には下記のような構成になる。
.
├── build.sh
├── dist/
├── event.json
├── lambda_function.py
├── package/
├── requirements.txt
└── venv/
最初に
最初にやる事は PJ dir を作成し、諸々をセットアップする事なので、下記手順で用意する。
とりあえず最初に最終構成を全部用意する。
$ mkdir sample
$ cd sample
$ python -m venv venv
$ . ./venv/bin/acrivate
$ pip install python-lambda-local
$ pip freeze > requirements.txt
$ mkdir dist
$ mkdir package
$ touch lambda_function.py
$ touch event.json
$ touch build.sh
$ chmod 755 build.sh
requirements.txt までを用意したら、次はビルド用 (Upload 用の zip を作るやつ) のスクリプトを作成する。
build.sh
#!/bin/bash
rm -rf package/*
cp *.py package/
pip install -r requirements.txt -t ./package/
cd ./package/
zip -r ../dist/lambda.zip .
次に実行したい Lambda スクリプトを実装する。
lambda_function.py
def lambda_handler(event: dict, context):
return {
'statusCode': 200,
'body': json.dumps(
'message': 'Ok',
}),
'isBase64Encoded': False
}
ローカルテストする時に event.json
を使う事がある (POST などで) ので、その場合は event.json
の内容もセットアップしておく。
テストする時は下記コマンドで実行できる。
(activate) $ python-lambda-local -f lambda_handler lambda_function.py event.json
ビルド
zip
ファイルのビルドは build.sh
を実行する事で ./dist/lambda.zip
に生成される。
$ ./build.sh
後は生成された zip を Lambda にアップロードしたら完了。
Discussion