lambda-python

ここでは,Python 言語で lambda 関数ハンドラーを作成し,deploy する手順をメモします.

CDK/TypeScript での lambda 関数の生成

  1. ランタイムの選定
    Lambda ランタイム external_link

Python の Lambda 関数ハンドラー

ここでは,Lambda 関数のエントリーポイントを用意します.

def handler_name(event, context): ... return some_value

ref: Python の Lambda 関数ハンドラー external_link

Python パッケージマネージャー

デプロイのための .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