LoginSignup
0
0

lambdaレイヤーを作成する(Python3.10 psycopg2)

Posted at

Python3.8 サポート終了

こちらの記事でlambda(python3.8)を使用したRDSの接続方法についての記事を書きましたが、2024年10月をもってPython3.8のサポートが終了するらしく、pythonのバージョンをあげた対応をしてみました。

作成するpythonのバージョン

今回は「Python3.10.14」で作成していきます。

python3.10.14の理由

ランタイムを「Python3.12」、「Python3.11」それぞれ試しましたが、どちらも下記のエラーとなってしまいました。

import module 'lambda_function': No module named 'psycopg2._psycopg'

AWSドキュメントではPython3.12もサポートされているようですが、これはおそらくランタイム「Amazon Linux2023」の場合だと想定

ランタイム「python3.x」はAmazon Linux2 なんだと思います。

Python3.11がダメな理由は・・・なんだろう?
いつかリベンジしたいと思いますが、今回は3.10で

手順

1.Amazon Linux 2のDockerコンテナ起動

docker run -it amazonlinux:2 /bin/bash

2.OpenSSL 1.1インストール

yum update -y
yum install -y openssl11 openssl11-devel

3.開発ツールインストール

※GCCやMakeに必要です

yum groupinstall -y "Development Tools"

4.開発ライブラリとwgetインストール

yum install -y bzip2-devel libffi-devel zlib-devel wget

5.Pythonダウンロード

cd /usr/src
wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
tar xzf Python-3.10.14.tgz
cd Python-3.10.14
./configure --enable-optimizations
make altinstall

6.PostgreSQLの開発パッケージをインストール

yum install -y postgresql-devel

7.Lambdaレイヤーのディレクトリ作成

mkdir -p /opt/python/lib/python3.10/site-packages

※AWS Lambdaは、レイヤーをデプロイする際に、この特定のディレクトリ構造(python/lib/python3.x(ランタイム)/site-packages)を期待しています。この構造に従うことで、Lambda関数が実行時に自動的にこれらのライブラリを読み込むことが可能となる

8.psycopg2インストール

python3.10 -m pip install aws-psycopg2 -t /opt/python/lib/python3.10/site-packages

ポイントはaws-psycopg2にすることです。
psycopg2だと↓のエラーになってしまいました

import module 'lambda_function': No module named 'psycopg2._psycopg'

9.アップロード用のzipファイルを作成

cd /opt
zip -r /opt/psycopg2_layer.zip python

以上です。

作成したlambdaレイヤーのアップロード方法等はこちらの記事も参考にしてみてください

0
0
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
0