[python] AWS lambda layer로 필요 라이브러리 추가

lambda 로 간단한 프로그램을 작성하여 사용하는 경우가 많은데 라이브러이들을 layer로 저장하고 사용하면 여러 lambda 함수에서 공동으로 사용할 수 있어 개발 속도를 높이는데 도움이 된다. 이 글은 인터넷 상에 있는 여러가지 방법들 중 제일 간단하고 쉽게 할 수 있는 방법에 대해 소개 한다.

◆ 라이브러리 다운로드

라이브러리는 Linux 환경에서 다운받고 그 라이브러리를 사용하여 layer를 만드는 것을 추천한다.

AWS lambda에서 사용하는 python 버전도 중요하다. 본 글에서는 python 3.8 기준으로 설명할 예정이다.

먼저 라이브러리를 다운받을 폴더를 생성 후 필요한 라이브러리 들을 다운 받는다.

#폴더 생성
cd $HOME 
mkdir -p lib/python 
cd lib/python
#라이브러리 다운
pip install pymysql -t .

다운 받는 목록을 현재 목록으로 지정해 주어야 한다. 지정해 주지 않으면 python설치 목록 중 Lib 폴더에 설치 된다.

#만든 라이브러리 폴더를 zip으로 묶어 준다.
cd .. 
zip ../pymysql.zip .

◆AWS lambda layer 추가

Lambda 서비스로 가서 Layer 탭에 들어가서 아래와 같이 설정해 준다.

Create Layer → 이름, 설명 기입 → upload a .zip file를 선택 후 금방 만든 zip파일을 업로드 (compatible architecture도 선택해 줘야 한다. 여기서는 x86_64를 선택) → runtime에서 python 3.8을 선택에서 layer 구성을 끝마친다.

◆함수에 Layer 추가

함수 편집 화면에서 Layers 항목에서 금방 추가한 layer를 선택하여 추가하면 된다.

명심해야할 점은 Layer에 크기 제한이 있다는 점이다. 왼만한 라이브러리를 모두 추가 가능 하나 deep learning 관련 큰 라이브러리는 따로 서비스를 이용하거나 몇개 layer로 만들어서 배포하는 것을 추천 한다. 아래 layer를 쉽게 만드는 github링크도 공유 했다. 해당 방법을 이용하면 쉽게 layer zip파일을 만들 수 있다.

https://blog.skbali.com/2018/11/aws-lambda-layer-example-in-python/