0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudShellからLambdaレイヤーを登録する

Posted at

LangChainなど、デフォルトのLambda関数に含まれていないパッケージを使いたい時はLambdaレイヤーを使用することになると思います。

ローカルPCの環境でガチャガチャ設定を変更したくない人のために、今回はCloudShellを使用してLambdaレイヤーを作成していきます。

CloudShellにアクセスする

超簡単です。

マネジメントコンソールにアクセスし、画面上部(画像赤枠箇所)をクリックするだけです。
1.png

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>レイヤーと移動して、アップロードが完了しているか確認します。
2.png

良さげですね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?