람다 함수에서 rds에 접근하기 위해서는 psycopg2라는 모듈을 사용해야 한다.
이 모듈은 aws 람다 python 환경에 설치되어있지 않아서, 별도의 Layer를 추가해서 작성해야 한다.
근데 나의 경우에는 알려진 psycopg2를 위한 레이어를 아래와 같은 방식으로 추가해도 해결이 안되었다.
pip install psycopg2-binary -t .
그래서, 더 찾아보니 psycopg2 패키지는 libpq와 종속성이 있어서 이런 관계를 포함해서 Layer를 추가해야 했다.
이를 위해서, local환경에서 다음과 같은 방법을 수행하였다.
mkdir python
sudo dnf update
sudo dnf install -y postgresql-devel
sudo dnf install -y libpq
poetry
를 사용해서 package를 생성한다.poetry init
poetry add psycopg2
poetry export -f requirements.txt --output requirements.txt
pip install -r requirements.txt -t ./python
zip -r9 ./python.zip ./python