Api 개발/flask

serverless 계층(layer) 설정

공부짱짱열심히하기 2023. 1. 11. 16:51

정상적인 순서로 서버리스를 만들었을때 send했을때 이런 오류가  나온다면

 

 

로컬에서 lambda에 배포할때 

우리 로컬에는 여러 라이브러리가 깔려있는 상태로 작업하고 lambda로 보낼때 필요한 라이브러리를 다 설치해주는데

이 라이브러리하고 소스코드 전부 다합처서 50mb가 넘으면 안된다는거

 

람다에는 소스코드만 넣어놓고 람다의 레이어를 만들어서 라이브러리(넘파이,판다스 등)를 미리 설치한뒤 람다실행될때 붙여준다.

 

numpy pandas 라이브러리를

lambda 레이어로 만드는 방법

 

aws 클라우드안에 ec2 람다가 있다면

ec2에 접속해 람다와 같은 파이썬 환경을 구축

ssh:ec2 접속(리눅스)

pypi접속 후 넘파이 판다스 설치해서 zip파일로 압축후

ftp: 로컬로 옮겨주고(파일질라) 

로컬에서 람다로 옮겨주기

 

 

1.putty 실행후 접속

 

2.파이썬이 없으면 아나콘다를 설치해주기

https://seonggongstory.tistory.com/111

 

EC2 리눅스에 아나콘다 설치

아나콘다 설치 내가 받은 ec2 클라우드에 파이썬을 사용해야하기 때문에 putty를 통해 리눅스 환경에서 아나콘다를 설치하기 https://www.anaconda.com/products/distribution#Downloads Anaconda | Anaconda Distribution An

seonggongstory.tistory.com

 

3.람다의 환경이 파이썬 3.9이므로 가상 환경을 만든다

conda create -n 가상환경이름 python=3.9

conda create -n lambda39 python=3.9
여기선 이렇게

 

4.가상환경으로 이동

conda activate lambda39

 

5.디렉토리를 하나 만든다. 이름은 python으로

mkdir 이름

mkdir python

 

6.만든 디렉토리로 이동

cd 이름

 

 

7.아마존 리눅스에 설치할 넘파이와 판다스,pytz 파일을 찾고 ec2에다운받기.

https://pypi.org/search/?q=numpy 

 

Search results

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

pypi.org

리눅스,파이썬3.9,x86 에 맞는거

링크 복사한뒤

wget 링크주소

판다스도 같은작업

pytz도 다운로드

파일 3개

 

8.unzip 명령을 통해 위의 3개 파일을 각각 압축푼다.

 

unzip 파일명

폴더와 파일이 압축이 풀렸음

판다스 pytz모두 같은 작업

 

9.필요없는 파일(기존 파일들) 삭제하기

whl파일들

rm -rf 파일명 or 폴더명

#참고로 파일명에 단어가 포함된 파일들을 모두 처리할때는
$ rm -rf *.whl
(.whl로 끝나는 모든거 삭제하라)

 

 

삭제된 모습

 

 

10.상위 경로로 이동해 python폴더 전체를 압축하기

pwd
(내 위치 경로 보기)

cd..
(상위 폴더로 이동)

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

#지금은 이렇게
zip -r numpy_pandas_layer_39.zip python

압축 잘되었음

 

11.파일질라로 레이어 이동시켜주기

 

https://seonggongstory.tistory.com/118

 

EC2 서버와 로컬간의 파일 전송: 파일질라

git에 push하는 것도 용량이 정해저 있어 어느정도 한계가 정해저 있다보니 대용량 영상을 업로드하는데 제한이 있다 이럴때 FTP를 이용해 서버와 로컬사이에 직접 파일을 주고받으면 된다. https://

seonggongstory.tistory.com

 

 

 

 

14.s3업로드를 위해 먼저 s3로가서 버킷을 만든다

버킷명 : 아이디-lambda-layer

아까 파일질라로 받은 파일을 업로드 해줌

 

 

 

14.람다 레이어 생성을 위해 계층 생성

https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/applications 

 

https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/applications

 

ap-northeast-2.console.aws.amazon.com

aws 람다로 이동

 

 

호환성 파이썬 s3링크 다 집어넣기

계층 생성 완료

 

 

 

10.6mb까지 줄었고 더 줄일수도 있음

 

15. vsc에서, requirements.txt.에 적은, numpy와 pandas는 빼야한다

삭제해주기

 

 

이때 region이 바뀐다면 그 region에 맞는 버킷부터 시작해야한다

14번 부터 다시 진행해야한다

 

 

1.putty 실행후 접속
2.파이썬이 없으면 아나콘다를 설치해주기
3.람다의 환경이 파이썬 3.9이므로 가상 환경을 만든다
4.가상환경으로 이동
5.디렉토리를 하나 만든다. 이름은 python으로
6.만든 디렉토리로 이동
7.아마존 리눅스에 설치할 넘파이와 판다스,pytz 파일을 찾고 ec2에다운받기.
8.unzip 명령을 통해 위의 3개 파일을 각각 압축푼다.
9.필요없는 파일(기존 파일들) 삭제하기
10.상위 경로로 이동해 python폴더 전체를 압축하기

11.파일질라로 레이어 이동시켜주기

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

15위의 파일을 s3 업로드 하기위해, 먼저 s3로 가서 버킷을 만든다. (버킷명: 여러분의 아이디-lambda-layers)

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

17.aws 콘솔의 람다 항목으로 이동해서

18.계층(layer) 계층 생성항목선택하여,계층을 생성한다. (s3, URL, X86_64, Python3.9

19.우리앱의 lambda로 이동하여, 계층을 추가한다.

20.vsc에서, requirements.txt.에 적은, numpy와 pandas는 빼야한다. (이미 레이어에서 설치해서 제공하니가)