본문 바로가기
AWS

[AWS] Lambda Layer 만들기

by coding_su 2023. 1. 11.

📝AWS Lambda layer 만들기

pandas 라이브러리를 사용한 서버를 배포하기 위해서

requirements.txt파일에 pandas와 numpy 라이브러리를 입력해줬는데 Lambda의 용량 초과로 설치가 되지 않았다

※ pandas를 사용하기 위해서는 numpy 라이브러리도 설치해줘야한다

 

이럴때는 Lambda에 직접적으로 용량 큰 라이브러리를 설치하지 말고 Layer에 라이브러리를 설치해 사용해야한다

(layer가 Lambda 해당 라이브러리가 사용할때마다 연결해준다 람다는 되도록 소스코드만 넣는다)

 

내 컴퓨터는 윈도우기 때문에 ec2 서버에 접속해서 라이브러리를 리눅스용으로 설치해 가져오겠다

요약정리
1. PuTTY로 ec2에 접속해서 버전에 맞는 새로운 가상환경 만들고 디렉토리 생성
2. 아마존 리눅스에 설치할 파일 찾아서 다운로드 후 압축 풀고 원본 파일 삭제
3. 상위 경로로 이동해 해당 폴더를 압축해 파일질라로 로컬컴퓨터로 전송
4. AWS S3에 버킷을 만들어 업로드 후 레이어(계층) 생성, 추가

+ 서버가 달라지면(서버를 변경하면) S3에 버킷을 만들어 다시 업로드해서 레이어 생성 추가 해야한다

 

우선 PuTTY를 실행해 ec2에 접속한다 (ec2에 Python이 없으면 먼저 아나콘다(Anaconda)를 설치한다)

 

Lambda의 환경이 Python3.9이므로 Python3.9로 새로운 가상환경 만든다

conda create -n lambda39 python=3.9

 

만든 가상환경으로 이동하여 이름을 python으로 디렉토리를 하나 만든다 (ll 해서 생성됐나 확인)

# 만든 가상환경 이동
conda activate lambda39

# 디렉토리 생성
mkdir python

 

python 디렉토리로 이동하여(cd python/) numpy, pandas, pytz를 설치해준다

아마존 리눅스에 설치할 파일을 찾기(https://pypi.org/)

 

※ 라이브러리의 종속성 때문에 해당 라이브러리에 필요한 파일들도 다 다운로드 해야한다

 인스톨(pip install)하면 다운로드한 파일이 보인다 이걸로 설치할 파일명을 확인해서 pypi에서 가져온다

 아래 email-validator를 인스톨해보면 dna, dnspython, email-validator 3개를 다운 받아야 한다

 Installing collected packages: idna, dnspython, email-validator

 

pypi > 라이브러리 검색해서 클릭 후 좌측 Download files에서 람다의 지원되는 런타임을 확인해서 해당하는 운영체제와 아키텍처 확인한 파일 링크 주소를 복사해서 아래 코드로 다운로드 하고

wget 링크주소

 

unzip 명령을 이용해서 위의 파일을 각각 압축 푼다

unzip 파일명

 

필요없는 원본 파일은(.whl) 삭제해준다

# 1개씩 삭제하기
rm -rf 파일명(또는 폴더명)

# 해당 디렉토리의 마지막에 .whl로 끝나는 파일을 모두 삭제하라는 명령어
rm -rf *.whl

 

상위경로(python 폴더가 보이는 경로)로 이동해서 python 폴더를 압축한다

(zip -r 압축파일명 압축할 디렉토리명)

zip -r numpy_pandas_layer_39.zip python

 

파일질라(FileZilla)를 이용해서 위의 파일을 내 컴으로 다운로드 한다

(파일질라 https://coding-jisu.tistory.com/141)

 

레이어 생성을 하기 전 먼저 AWS의 S3로 가서 버킷을 만들어 다운로드한 zip파일을 업로드 해주고 객체 URL 복사한다

 

Lambda > 계층 > 계층 생성 > 이름과 설명 입력 후

Amazon S3에서 파일 업로드하고(용량이 적으면 .zip파일 업로드 바로 해도됨) X86_64, Python3.9를 선택해서 계층 생성

 

Lambda > 함수 > ApiLambdaFunction > 계층의 [Add a layer](계층 추가) 클릭해 사용자 지정계층 선택해서 추가해준다

 

+ Visual Studio Code에서 requirements.txt에 적은 numpy와 pandas는 빼야한다(이미 레이어에서 설치해서 제공하니까)

댓글