LangChainなど、デフォルトのLambda関数に含まれていないパッケージを使いたい時はLambdaレイヤーを使用することになると思います。
ローカルPCの環境でガチャガチャ設定を変更したくない人のために、今回はCloudShellを使用してLambdaレイヤーを作成していきます。
CloudShellにアクセスする
超簡単です。
マネジメントコンソールにアクセスし、画面上部(画像赤枠箇所)をクリックするだけです。

Pythonのバージョンを上げる
LambdaのランタイムをPython 3.12にすることが多いため、CloudShellでもPython 3.12を使用できるようにしていきます。
デフォルトだと Python 3.9.23がインストールされていました。
python --version
Python 3.9.23
これを3.12に上げていきます。
sudo yum install python3.12
インストール完了したら、シンボリックリンクを編集していきます。
~ $ ll /usr/bin/python*
lrwxrwxrwx. 1 root root 16 Sep 4 10:17 /usr/bin/python -> /usr/bin/python3
lrwxrwxrwx. 1 root root 9 Aug 12 19:28 /usr/bin/python3 -> python3.9
-rwxr-xr-x. 1 root root 15744 Jul 31 17:40 /usr/bin/python3.12
-rwxr-xr-x. 1 root root 15744 Aug 12 19:29 /usr/bin/python3.9
sudo ln -sf /usr/bin/python3.12 /usr/bin/python3
再度シンボリックリンクの状態を確認します。
~ $ ll /usr/bin/python*
lrwxrwxrwx. 1 root root 16 Sep 4 10:17 /usr/bin/python -> /usr/bin/python3
lrwxrwxrwx. 1 root root 19 Oct 19 11:59 /usr/bin/python3 -> /usr/bin/python3.12
-rwxr-xr-x. 1 root root 15744 Jul 31 17:40 /usr/bin/python3.12
-rwxr-xr-x. 1 root root 15744 Aug 12 19:29 /usr/bin/python3.9
最後にpythonのバージョンが3.12になっていたらおkです。
python --version
Python 3.12.11
pip環境を整える
pipもアップグレードしていきます。
何もしない状態だと、以下のメッセージが出て使い物になりません。
~ $ pip -v
Traceback (most recent call last):
File "/usr/bin/pip", line 7, in <module>
from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/pip", line 10, in <module>
from pip._internal.main import main
ModuleNotFoundError: No module named 'pip'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/pip", line 17, in <module>
from pip._internal import main
ModuleNotFoundError: No module named 'pip'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/pip", line 20, in <module>
from pip import main
ModuleNotFoundError: No module named 'pip'
以下のコマンドを入力してアップグレードします。
~ $ python -m ensurepip --upgrade
Looking in links: /tmp/tmpturs2s99
Processing /tmp/tmpturs2s99/pip-23.2.1-py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-23.2.1
アップグレード完了です。
~ $ pip --version
pip 23.2.1 from /usr/local/lib/python3.12/site-packages/pip (python 3.12)
レイヤーを作成する
まずはLangChainインストール用のディレクトリを作成していきます。
ディレクトリが作成したら、そのディレクトリにパッケージをインストールしていきましょう。
mkdir python
pip install -t ./python langchain langchain-aws
ディレクトリを圧縮していきます。
zip -r9 layer.zip python
圧縮できました。
~ $ ll
total 52112
-rw-r--r--. 1 cloudshell-user cloudshell-user 53357894 Oct 19 12:28 layer.zip
drwxr-xr-x. 80 cloudshell-user cloudshell-user 4096 Oct 19 12:26 python
任意のS3経由でレイヤーをアップロードしていきます。
aws s3 cp layer.zip s3://<S3バケット名>/layer.zip
Lambdaレイヤーを登録します。
aws lambda publish-layer-version \
--layer-name langchain-layer \
--compatible-runtimes python3.12 \
--content S3Bucket=<S3バケット名>,S3Key=layer.zip
マネジメントコンソールから、Lambda>レイヤーと移動して、アップロードが完了しているか確認します。

良さげですね。