Lambdaにレイヤーを追加する
Lamdbaでサードパーティライブラリを使用する場合には「レイヤー」を作成して、関数に追加する必要があります。
今回はレイヤーの作成方法をメモ
Amazon Linux2環境の起動(作成)
LambdaはAmazonLinux環境なので、同一の環境で作成します
docker run -it --rm amazonlinux:2 bash
Python3.8をインストール
yum update -y
yum install -y amazon-linux-extras
amazon-linux-extras enable python3.8
yum install -y python3.8 zip
※Python3.8にしている理由はAmazonLinux2(amazon-linux-extras)でインストール可能なバージョンが3.8だからです。
これ以上のバージョンにするには別な方法でインストールする必要がありますが、今回は割愛(一番簡単な方法のため)
インストール可能なバージョンの確認
amazon-linux-extras list
必要なパッケージをインストール(今回はslack-sdkを例に説明)
mkdir -p /opt/python/lib/python3.8/site-packages
python3.8 -m pip install slack-sdk -t /opt/python/lib/python3.8/site-packages
レイヤー用のZIPファイルを作成
cd /opt
zip -r /opt/slack_sdk_layer.zip python
作成したZIPファイルの取り出し
docker cp <CONTAINER_ID>:/opt/slack_sdk_layer.zip .
Lambdaレイヤーを作成
レイヤー → レイヤーの作成 → レイヤーの設定 にて作成したzipファイルをアップロード
※アーキテクチャにはx86_64 ランタイムにはpython3.8を選択
Lambda関数を作成
Lambdaのランタイムはpython3.8を選択し、関数を作成
関数にレイヤーを追加
関数のレイヤー欄からレイヤーの追加 → カスタムレイヤー → 作成したレイヤーを選択
これで完成です。