Lambda × Python で外部レイヤーを利用するときは Klayers が便利
ちょっとした処理を Python × Lambda で作成することがよくあるのですが、そのときに少しめんどくさいのが各種ライブラリの利用です。
こんな記事を書いたこともありましたが、ライブラリ自体のバージョンやランタイムのバージョンが上がるごとに Zip 化 -> アップロード対応する必要があります。
ほんとにちょっとした処理のために使いたいだけなのに・・・という気持ちもあり、全体的にお手軽とはいえもう少し楽したい気分です。
Keith's Layers (Klayers)
Keith's Layers (Klayers) は Python の Lambda レイヤーを公開・管理しているリポジトリです。
すべてのライブラリを網羅しているわけではありませんが、有名どころはそろっている印象です。
Python3.11 対応リスト
Lambda, DynamoDB, EventBridge などを用いてレイヤーの管理を自動化しており、毎月1日にライブラリのバージョンをチェックして新しいバージョンを構築するとのことです(ただし、不具合があって fix されたライブラリがある場合は Issue にて報告すれば対応してくれるっぽい)。
注意点は原則として公開から 365 日が経過したレイヤーは削除されてしまう可能性があることです。
Lambda 関数をデプロイしたときに指定したレイヤーは利用できますが、新しく関数を作成する際にそのレイヤーを指定することができないので注意が必要です。
外部レイヤーの指定方法
利用したいライブラリの ARN をメモしておきます。
Klayers から探す場合は、Readme.md の 「List of ARNs」 から対象のランタイムバージョンを選択し、対象の Lambda 関数のリージョンを選択し、利用したいライブラリの ARN を探します。
ARN がメモできたら、マネジメントコンソールからレイヤーを設定したい Lambda 関数のページにレイヤー設定があるので、「レイヤーを追加」します。
レイヤーを選択する画面に遷移するので、「ARN を指定」-> メモした ARN を入力すれば、利用可能になります。
さいごに
Zip 化する前に確認しよう
有志の方々に感謝です
参考
Discussion