はじめに
AWS Lambdaにてサードパーティ製のライブラリを使いたいと思って調べたところ
Lambda Layerを使うとLambda関数間でライブラリを共有できるとのこと
じゃあ実際に使ってみようとしてハマった話です。
結論
Lambda Layerへアップロードするローカルのフォルダ名は「python」にする
Lambda関数はLayerを読み込む実行パスとして「opt/python/Layer」となるらしく
圧縮前のディレクトリ名は「python」としておく必要があった。
手順
今回利用したかったのは「line-bot-sdk」なので、これを例にしていきます。
ライブラリのインストール(ローカルへ)
pip install line-bot-sdk -t python/
pythonディレクトリは別途作成してください。
zipファイルに圧縮
zip -r layer.zip python
Lambda Layerへアップロード
aws lambda publish-layer-version --layer-name your-layer-name --zip-file fileb://layer.zip --compatible-runtimes python3.11 --region us-east-1
「your-layer-name」は自分のレイヤー名を指定してください。
リージョンもLambda関数のあるリージョンへと変更してください。
ランタイムはLambda関数のランタイムと合わせるようにしてください。
※AWS Console上からzipファイルをアップロードでも問題ないと思います。
Lambda関数へLayerを追加する
AWS ConsoleよりLayerを追加したいLambda関数を選択して、追加する。
これで、Lambda関数にて、Layerへ含めたサードパーティ製のライブラリがimportできると思います。
おわりに
かなり初歩的ですが、同じように詰まることがあるの方もいるのではないかと思い、
記事にしました。(私はこれに気付かず2時間ほど時間取られました・・)
間違い等ありましたら、コメントにてご指摘いただければ幸いです。