API (AWS)

[에러 디버깅] Pandas/ Numpy 가 Lambda에서 실행이 안될때 : Serverless 배포시 502 Bad Gateway에러

jasonshin 2022. 1. 11. 16:32

문제 : 내컴퓨터 local windows에는 pandas와 같은 라이브러리가 깔려있지만, 배포한 AWS server에는 없는 라이브러리이기 때문에 배포후 에러가 난다.

 

현상 :

배포 후 에러 화면
requirements.txt에 라이브러리를 적고 다시 배포시도

계획 : 

내가 만든 람다에 레이어를 붙여줘야한다.
레이어 최대 5개까지 추가 가능

 

해결 과정 : 

 

1. 

ec2 리눅스에 판다스 넘파이 설치

리눅스 가상환경에서 실행

 

현재 파이썬 버전 확인, 람다의 환경이 파이썬 3.8버전이므로 가상환경을 파이썬 3.8버전으로 만들어서 맞춰준다.  

$ python --version : Python 3.9.7

 

$ conda create -n 이름짓고 python=3.8 

 

 

가상환경으로 이동

$ conda activate lanbda

 

 

경로생성, 경로이동

$ mkdir python

$ cd python

 

 

판다스 설치

$ pip install -t . pandas

 

 

 

필요없는 파일 삭제 (dist-info들과 pycache, pandas numpy 파일들 지우기)

$ rm -r *.dist-info __pycache__ pandas numpy

 

 

(람다레이어 만들기 참고 블로그) https://korniichuk.medium.com/lambda-with-pandas-fd81aa2ff25e

판다스 설치 홈페이지 : https://pypi.org/project/pandas/#files

파일 링크를 링크주소복사 후 리눅스 터미널에 wget 붙여넣기

넘파이 설치 홈페이지 : https://pypi.org/project/numpy/#files

 

numpy도 ctrl+f로 리눅스 38 찾아서 링크주소 복사 후 리눅스에 설치
wget + 주소 붙여넣기 리눅스에 설치

 

 

파일명을 whl => zip으로 변경, 압축풀고, 필요없는 파일들 삭제, 상위경로로 이상한 후 python 폴더를 압축

$ mv ...numpy(tap -tap으로 )...whl ...numpy...zip

$ mv ...numpy...whl ...numpy...zip

 

$ unzip numpy ...zip

$ unzip pandas ...zip

 

$ rm -rf *.zip *.dist-info

 

$ cd..

$ zip -r pandas_layer.zip python

 

2.AWS에 Pandas/Numpy layer 생성

 

 

ec2에서 만든 pandas_layer.zip 파일을 업로드

 

파일질라를 이용해서 내 컴퓨터에 zip 파일을 먼저 다운로드 받는다.

 

파일질라로 로컬에 다운받은 zip파일을 끌어놓기

 

파일명을 눌러서 객체 URL을 링크주소복사한다.

 

aws- 람다로 이동
이름(pandas-numpy-layer)적고, S3의 링크 넣고, x86_64, python3.8로 생성
생성완료 페이지
람다 - 애플리케이션 - 우리가 만든 앱 선택
ApiLambdaFunction 클릭
 Layers - Add a Layer 클릭
사용자 지정 계층에서 우리가 만든 layer 선택 후 추가
layer 추가 완료 화면
레이어를 설치했기 때문에 vscode - requirments.txt에서 numpy와 pandas는 빼주고 sls deploy 명령
endpoints 입력 해서 포스트맨에서 테스트. 잘실행된다.

 

반응형