AWS

numpy, pandas 라이브러리를 lambda layer 로 만드는 방법

yugyeong 2023. 1. 11. 18:01

serverless 에 api 를 배포할 때, requirements.txt 파일에 우리가 로컬에서 설치한 파이썬 파일의 이름을 적어줘야 한다.

근데 pandas 와 numpy 를 적고 실행을 돌리면 Internal server error 가 발생한다.

 

 

그 이유는 pandas, numpy 의 용량이 너무 크기때문이다.

따라서, pandas 와 numpy 라이브러리를 Zip 파일로 만들어서 lambda layers 로 만들 것이다.

 

numpy, pandas 라이브러리를 lambda layer 로 만드는 방법이다.

 

1. putty 로 ec2 에 접속한다.

 

2. 파이썬이 없으면, 먼저 아나콘다 설치


3. 람다의 환경이 파이썬 3.9 이므로, ec2 환경에 새로운 가상환경을 만든다

   가상환경명은 lambda39 로 하였다.

conda create -n lambda39 python=3.9

 

4. 만든 가상환경으로 이동한다

5. 디렉토리를 하나 만든다. 

 - 이름은 python 으로 해야한다.

$ mkdir python


6. python 디렉토리로 이동

$ cd python


7. pypi 홈페이지에서 아마존 리눅스에 설치할 넘파이와 판다스 파일을 찾는다.
 

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

 

8. numpy, pandas, pytz 파일을 찾아서 ec2에 다운로드 한다.

python 이 3.9 버전이기 때문에 라이브러리 파일들도 전부 3.9 버전으로 다운로드 해야한다.

ec2 는 리눅스 서버이기 때문에 리눅스 버전으로 찾아서 링크를 복사한다.

 

다운로드 할 때는 wget 명령어를 이용하면 된다,

$ wget 파일 url



9. unzip 명령어를 이용하여서, 위의 3개 파일을 각각 압축을 푼다

$ unzip 파일링크


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

$ rm -rf 파일명(폴더명)
  ( 참고, 파일명에 단어가 포함된 파일들을 모두 처리하고 싶을 때
    $ rm -rf *.whl  )


11. 상위 경로로 이동한다 (python 폴더가 보이는 경로)

$ cd..
$ ls -al


12. python 폴더를 압축한다.

$ zip -r 압축파일명.zip 압축할디렉토리명
$ zip -r numpy_pandas_layer_39.zip python


13. 파일질라를 이용해서, 위의 파일을 내 컴퓨터로 다운로드 한다.

더블클릭하면 파일이 다운로드 된다.

 

 

레이어 생성 부분

 

14. 람다 레이어 생성을 위해서, aws 콘솔에 접속한다.

15. 위의 파일을 S3 업로드 하기 위해서, 먼저 aws 의 S3 로 가서 버킷을 만든다

( --> 만약 파일의 용량이 크지 않다면 이 S3에 버킷을 만드는 과정은 생략하고 17번으로 바로 이동하면 된다

 파일의 용량이 클 경우에만 S3에 버킷을 생성하여서 업로드 하면 된다.)

 

 

16. S3의 위 버킷에, 앞에서 만든 zip 파일을 업로드 한다.

 

17. aws 콘솔의 lambda 로 이동하여서 계층 생성 항목을 선택한다.

 

18. 계층 생성은 아래와같이 셋팅을 한다

(S3 URL, X86_64, Python3.9)

 

 

Amazon S3 링크 URL 은 s3 페이지로 들어가서 객체 URL을 넣어준다.

 

 

19. 계층을 추가하고자 하는 앱의  lambda 로 이동하여, 계층을 추가한다.

 

ApiLambdaFunction 을 클릭한다.

 

 

Layers 를 클릭한다.

 

 

계층의 Add a Layer 를 선택한다.

 

 

사용자 지정 계층을 선택한 후, 방금 막 만든 레이어를 선택하고 추가를 눌러주면 된다.

 

 

20. 이제 vs code 에서 , requirements.txt 에 적은, numpy 와 pandas 라이브러리는 빼야한다.
      -> 이미 레이어에서 설치해서 제공하니까 

pandas 와 numpy 를 지우고 sls deploy 를 하면 서버가 잘 작동될 것이다.