📘

【実例】Python 3.12用psycopg2のLambdaレイヤーを作成する

2024/04/22に公開

psycopg2 の Lambda レイヤーを作成する

☘️ はじめに

本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

👀 Contents

経緯

AWS より下記通知があり、Python 3.12 にバージョンアップしようとしました。
ただ、これまで使用していたarn:aws:lambda:ap-northeast-1:898466741470:layer:psycopg2-py38:1という Lambda レイヤーが、どうやら 3.9 までしか配布がないようでした。
そこで、Python 3.12 用を自作することになりました。

We are ending support for Python 3.8 in Lambda on October 14, 2024.
This follows Python 3.8 End-Of-Life (EOL) which is scheduled for October, 2024

Status of Python versions

手順

CloudShell 上で次の手順を実施します。

1.Docker ファイルを作

2.イメージをビルドして、zip ファイルを生成

3.Lambda レイヤーを登録

1.Docker ファイルを作成

Dockerfile-psycopg2-3.12
FROM public.ecr.aws/lambda/python:3.12

WORKDIR /work

# システム更新と必要なパッケージのインストール
RUN dnf update && dnf install -y zip

RUN pip install --upgrade pip && \
    pip install psycopg2-binary -t /python/lib/python3.12/site-packages/
ENTRYPOINT [""]
CMD zip -r psycopg2-3.12.zip /python/

2.イメージをビルドして、zip ファイルを生成

docker build -t psycopg2-3.12 . -f Dockerfile-psycopg2-3.12

docker-build

docker run -v "${PWD}":/work psycopg2-3.12

docker-run

psycopg2-3.12.zip が生成されました。

result

3.Lambda レイヤーを登録

生成した psycopg2-3.12 を Lambda レイヤーに登録します。(画像ではコマンド実行が 2 回目なのでレスポンスのバージョンが 2 になっています)

aws lambda publish-layer-version \
  --layer-name psycopg2-312 \
  --zip-file fileb://psycopg2-3.12.zip \
  --compatible-runtimes python3.12 \
  --region ap-northeast-1

lambda-publish-layer

マネジメントコンソールでも登録されていることが確認できました。(画像では 2 回目なのでバージョン 2 が生成されています)

result-console

まとめ

CloudShell ではデフォルトで Docker コマンドが使えるため、手軽に実施できます。

GitHubで編集を提案

Discussion