lambda-python
ここでは,Python 言語で lambda 関数ハンドラーを作成し,deploy する手順をメモします.
CDK/TypeScript での lambda 関数の生成
- ランタイムの選定
Lambda ランタイム external_link
Python の Lambda 関数ハンドラー
ここでは,Lambda 関数のエントリーポイントを用意します.
def handler_name(event, context): ... return some_value
ref: Python の Lambda 関数ハンドラー external_link
Python パッケージマネージャー
-
いろいろなパッケージマネージャー
- pip-tools
- pipenv
- poetry
- venv
-
考えているだけで時間が過ぎ去るので,まずは poetry で開発してみる.
/user/admiswalker/study/python/packageManager/poetry(https://admiswalker.growi.cloud/616a72478baf200049610ddf)
デプロイのための .zip ファイルアーカイブ
Lambda デプロイパッケージ external_link によると,Lambda デプロイパッケージには,コンテナイメージによるデプロイと,.zip ファイルアーカイブによるデプロイがある.ここでは,.zip ファイルアーカイブで Python Lambda 関数をデプロイする external_link 際に必要となる .zip ファイルアーカイブの作り方を考える.
- パッケージの zip 化.
- ステップ 3: 必要な Python ライブラリを含むパッケージを作成する external_link
を参考にすると,
のような操作をしている.cd venv/lib/python3.7/site-packages && \ zip -r ~/pinpoint-importer/pinpoint-importer.zip dateutil docutils jmespath \ s3fs s3transfer fsspec six.py && cd -
poetry を使う場合も,.venvディレクトリの中に site-packages という依存ファイルが一式生成されている.これを .zip 化すればよいものと思われる.
シェルスクリプト化
Docker での build を見据えて,手順をシェルスクリプトに落とし込む.
build 環境の Docker コンテナ化
lambda の環境が Amazon Linux2 だから,同じ環境で build した方が安全なので,Docker を用いて同じ環境で build する.
References