람다 layer 추가

ukson·2024년 8월 23일
0

trouble shooting

목록 보기
1/4

람다 함수에서 rds에 접근하기 위해서는 psycopg2라는 모듈을 사용해야 한다.
이 모듈은 aws 람다 python 환경에 설치되어있지 않아서, 별도의 Layer를 추가해서 작성해야 한다.

근데 나의 경우에는 알려진 psycopg2를 위한 레이어를 아래와 같은 방식으로 추가해도 해결이 안되었다.

pip install psycopg2-binary -t .

그래서, 더 찾아보니 psycopg2 패키지는 libpq와 종속성이 있어서 이런 관계를 포함해서 Layer를 추가해야 했다.

이를 위해서, local환경에서 다음과 같은 방법을 수행하였다.

  1. 람다 함수 레이어 추가는 무조건 python 디렉토리가 최상위 디렉토리로 구성되어 있어야 한다.
    mkdir python
  2. 현재 로컬환경에서 알맞은 방법으로 라이브러리를 설치한다. (이미 설치되어있을 경우 생략 가능, 필자는 amazon linux 환경 기준으로 작성)
    sudo dnf update
    sudo dnf install -y postgresql-devel
    sudo dnf install -y libpq
  3. 현재 디렉토리에서 의존성까지 한번에 해결해주는 poetry 를 사용해서 package를 생성한다.
    poetry init
    poetry add psycopg2
  4. 현재 생성된 의존성 목록을 requirements.txt 로 추출한다.
    poetry export -f requirements.txt --output requirements.txt
  5. pip 와 이전에 생성한 의존성 목록을 이용해서 레이어용 파일을 생성한다.
    pip install -r requirements.txt -t ./python
    zip -r9 ./python.zip ./python
  6. 생성된 zip파일을 이용해서 람다 계층 (layer)을 생성한다.
profile
one step further

0개의 댓글