AWS Lambda上でpythonのサードパーティライブラリを動作させるには、必要なライブラリをzipにまとめてLambdaにアップロードして、レイヤーとしてLambda関数に追加する必要がある。
検索するとヒットする情報では、単純に pip -t install でライブラリをインストールしてまとめているものが多いが、この方法ではC言語等のOS依存コードが入ったライブラリがLambda上で動作しないため、実行時に以下のようなエラーが発生する。
Unable to import module 'lambda_function': No module named 'pydantic_core._pydantic_core'
Lambdaの実行環境と異なる環境でzipを作成する場合は以下の手順でzipを作成する。
AWS Lambdaの環境
手順
- 適当なディレクトリ内で以下を実行してpythonディレクトリ以下に必要なライブラリをインストールする。
※<package_name>はインストールするライブラリ名を指定
※Lambdaの動作環境がarm64の場合は--platformをmanylinux2014_aarch64に変更
pip install \ --platform manylinux2014_x86_64 \ --target=python \ --implementation cp \ --python-version 3.13 \ --only-binary=:all: --upgrade \ <package_name>
作成したzipをLambdaにアップロードする。
Lambda上で「レイヤー」を選択し、「レイヤーを作成」してzipをアップロードする。アーキテクチャとランタイムは手順1で指定した設定に合わせること。作成したレイヤーを関数にセットする。
以上でzip内のライブラリがLambda内で使用できるようになる。