🔖

AWSのLambdaにレイヤーを追加するまでの流れ

2024/07/07に公開

はじめに

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