AWSのLambdaにレイヤーを追加するまでの流れ
はじめに
AWSのLambdaを使うときに、インポートファイルごとLambdaに入れると、ファイルの容量が大きくて、Lambda上で少し修正したいときなどに、再度ローカルで編集して、zipファイルにして、アップロードする必要が出てきて、手間がかかってしまいます。そこで、Lambdaにレイヤーとしてインポートファイルを追加することで、編集をしやすくすることができます。
その上で、自分の備忘録として、簡単に方法をまとめたいと思います。
実装
実行環境
windows上で使えるlinux環境のwslを使っています。
ファイルのインストール
まず、requirements.txt
に
langchain-core
langchain-community
langchain
langchain-openai
langchain-experimental
python-dotenv
neo4j
numpy==1.25.0
このように、インポートするモジュールをリストアップします。
まず、
mkdir python
cd python
pythonフォルダを作成し、pythonフォルダ内に入ります。
これを用いて
pip install -r ../requirements_add.txt -t .
-t
を入れることで、仮想環境のbin/lib
フォルダ上ではなくて、その階層下にインスト―ルされます。
インストールしたら、一度上の階層に戻ります。
cd ../
zipファイルにする
そしたら、python
フォルダをzip化します。
そのためのコードは以下になります。
zip -r9 {ファイル名}.zip ./python
このコマンドによって、./pytohn
フォルダを{ファイル名}.zip
でzipファイルにします。
-r{数字}
の{数字}は0~9の値をとり、zip化するときの圧縮具合を表します。
0は圧縮なし(格納のみ)~9は最も高い圧縮です。数字が大きくなるほど、圧縮度が高まり、小さいデータで表すことができますが、その分、圧縮には時間がかかってきます。
ちなみに、数字を設定しない場合、デフォルトで-6
の圧縮レベルです。
レイヤーに追加
Lambda > レイヤー と進み、レイヤーの作成から、アップロードして終わりです。
Lambda関数にレイヤーを追加
作成したレイヤーを、コードタブを押し、一番下にレイヤーの編集するところがあるので、そこで、レイヤー追加ボタンから追加します。
終わりに
windowsやらlinuxやら、互換性の問題からエラーがたくさん出てしまいましたが、私が躓いた点を簡単にまとめてみました。
Discussion