본문 바로가기
AWS

AWS lambda에 psycopg2 Layer 추가하기

by 전봇대파괴자 2023. 3. 27.
  • AWS Lambda function에서 psycopg2 라이브러리 사용 시 레이어를 추가하는 방법에 대해 설명합니다!

 

들어가기 전에

  • 해당 문서는 AWS lambda function 작성 시 psycopg2 라이브러리를 사용해야 하는 상황인 분들을 위한 것입니다.
    • psycopg2 라이브러리는 python과 postgresql을 연결하여 select, insert, update, delete 등의 작업을 수행할 수 있도록 합니다. 자세한 설명은 아래 공식 문서 링크를 참조해주시기 바랍니다.
  • AWS lambda function에서 built-in 라이브러리 외의 다른 python 라이브러리를 사용하기 위해서는 일반적으로 아래와 같은 과정을 거쳐야 합니다.
1. 사용하고 싶은 라이브러리를 설치합니다.
2. 해당 라이브러리의 복사본을 만들어 zip 파일로 압축합니다.
3. AWS Lambda > Layer > Create layer에서 zip 파일을 업로드하고, 새로운 레이어를 만듭니다.
4. 해당 라이브러리를 사용하고 싶은 AWS Lambda function에 레이어를 추가합니다.
  • psycopg2 라이브러리의 경우 위의 과정과 조금 차이가 있습니다. 참고 부탁드립니다.

 

1. awslambda-psycopg2 repository clone/download

💡 AWS lambda를 위한 psycopg2 패키지 파일을 다운로드합니다.
  • psycopg2 라이브러리의 경우, github에 AWS Lambda function에서 사용할 수 있도록 python 버전별로 라이브러리 패키지가 담긴 repository가 따로 존재합니다.(링크)
  • 해당 github에 들어가 git clone하거나 repository를 zip 파일로 다운로드합니다.
    • repository를 다운로드하는 방법은 파일 압축 풀기 등의 과정이 번거롭기 때문에 git clone이 더 시간을 절약할 수 있습니다!

 

2. psycopg2 패키지 zip 파일로 압축

💡 psycopg2 패키지를 AWS lambda 업로드를 위한 zip 파일로 압축합니다.
  • python runtime 환경을 선택합니다. 해당 repository에서는 python3의 경우 3.6~3.9까지를 지원하고 있으며, 아래의 과정은 python 3.9를 기준으로 진행되었습니다.
  • 우선 로컬에 패키지 디렉토리의 뼈대가 될 경로를 생성합니다.
$ mkdir -p python/lib/python3.9/site-packages/psycopg2
$ pwd # 절대 경로 확인
  • clone한 repository의 경로로 들어갑니다. psycopg2-3.9 디렉토리의 모든 파일을 위에서 생성한 경로로 복사합니다.
$ cd awslambda-psycopg2/
$ cp psycopg2-3.9/* python/lib/python3.9/site-packages/psycopg2 # pwd에서 확인한 절대 경로 입력
  • 완성된 패키지 디렉토리를 zip 파일로 압축합니다.
$ zip -r9 psycopg2-py39.zip python

 

3. AWS lambda layer 생성/적용

3.1. psycopg2 layer 생성

  • AWS console로 로그인하고, AWS lambda > Layers로 들어갑니다.
  • 우측 상단의 [create layer]를 선택합니다.
  • 아래의 항목들을 모두 입력하고, 2번에서 생성했던 zip 파일을 업로드합니다.
  • name은 알아보기 쉽도록 라이브러리 이름으로 하는 것이 좋습니다. runtime은 python 3.9로 설정하였습니다.

  • 입력이 모두 끝나면 우측 하단의 [create]를 눌러 layer 생성을 완료합니다.

 

3.2. AWS lambda function에 psycopg2 layer 적용

  • AWS lambda > Functions에서 psycopg2를 적용하고 싶은 Function을 선택합니다.
  • 가장 하단의 Layer 항목에서 [Add a layer]를 선택합니다.
  • [Custom layers]를 선택하고, 아래 보이는 드롭다운에서 3.1.에서 만들어둔 [psycopg2] layer를 찾아 선택합니다.

 

4. 테스트

  • Lambda function에 아래의 코드를 추가하고, 테스트를 생성하여 진행합니다.
import psycopg2
  • Runtime.ImportModuleError가 발생하지 않고 Succeeded가 떴다면, 정상적으로 진행된 것입니다. 이제 function을 작성하여 쿼리문을 테스트해볼 수 있습니다!

 

참고 문서

  • psycopg2 공식 문서(link)
  • 참고한 stackoverflow 문서(link)