lambdaのレイヤー作成(Docker必須)
色々ネットにあったけど。。。
まず、一番多かったのはcloud9を使うという記事。これはまぁ、そうだよね、なんですが、pythonをコンパイルしろと。。。そして、ローカルにアマゾンlinuxを持ってくるというのも多かったんですが。。。
そのどちらの方法でもpsycopg2はうまくいかなかったです。
私の無知のなせる業で、psycopg2-binaryがあることに後々気づくことに。
GPTに聞いたら答えてくれたんですけどね。
ということで、一番手っ取り早い方法は、pythonの3.12のdockerイメージをダウンロードして、そのうえで、layerの作成を行うことでした。
自分へのメモを兼ねて、こちらに載せておこうかと思います。
# powershellからdockerをrunする。ただし、イメージはpython:3.12を利用する。
# 併せて、ローカルフォルダーを/workspaceにマウントしておく
PS C:\python-test> docker run -it -v .:/workspace python:3.12 /bin/bash
# ログイン
root@679a1a593dcd:/#
# pythonフォルダーを作成する(そういう仕様のようだ)
root@679a1a593dcd:/workspace# mkdir python
# pythonにカレントディレクトリを移動
root@679a1a593dcd:/workspace# cd python
# psycopg2-binaryをインストールする。このbinaryに苦戦した。
root@679a1a593dcd:/workspace/python# pip install psycopg2-binary -t .
# workspaceに移動する
root@679a1a593dcd:/workspace#
# zipをインストールする
apt update
apt install -y zip
# pythonフォルダーをzipする
root@679a1a593dcd:/workspace# zip -r9 psycopg2_layer.zip python
# コンテナから抜ける
root@679a1a593dcd:/workspace# exit
これで、今回はサンプルとして C:\python-testというフォルダーをマウントしておいたので、そのフォルダーにpsycopg2_layer.zipができているはずです。あとはこれをlayerに登録して、関数と紐づけをすれば動きました。
すべてコンソールの画面からやればできるので、それほど難しい操作ではないかと思いますので、ここでは割愛します。公式の手順はこちら