はじめに
Lambda関数でサードパーティのライブラリーを使用したいときは、下記のいずれかの方法を使って、対象のライブラリーを追加する必要がある。
- 追加したいライブラリーを含んだパッケージデプロイ
- Lambda Layersを使って追加
今回は「Lambda Layersを使って追加」についてまとめていく。
Lambda Layersを使った追加方法
環境
- Windows / Mac
- Dockerが使えること。
- ここではDockerのインストール方法は省略するが、ローカルの場合はDocker Desktopを使うと簡単。
- Linuxサーバー等にインストールする場合は下記記事記事を参照。
やってみて分かったこと
-
Layerにアップロードするライブラリーは、AmazonLinux環境で作成しないと読み取ってくれないことが分かった。
- WindowsやMacのローカル環境で、pipを使ってインストールしたライブラリーをLayerに追加しても正常に読み取ってくれなかった。
- 他のLinux環境では試していないので、もしかしたらそちらでも可能かもしれない(未検証)
-
そこで、「docker-lambda」というLambda環境を構築できるDockerコンテナを利用してライブラリーを作成することでうまくいったので、次章ではその方法についてまとめていく。
- docker-lambdaについては下記を参照。
docker-lambdaを使ったライブラリーファイルの作成
- requirements.txtに必要なライブラリーを記載する。
- 下記コマンドを実行。
- 初回だけイメージpullに時間がかかるが、2回目以降はしないので早くなる。
- 作成するフォルダ名は「python」にしないといけないみたい。
- これについては諸説あるみたいだが、「python」とするとうまくいった。
- Pythonのバージョンは例として3.8とした。
- どのバージョンをサポートしているかは上記に記載したURLを参照。
docker run --rm -v "$(PWD):/var/task" lambci/lambda:build-python3.8 pip install -r ./requirements.txt -t python/lib/python3.8/site-packages/
- カレントディレクトリに「python」フォルダができているのでzipファイルにする。