1. AWS Lambda Layer
serverless를 이용하여 배포시 requirements.txt 파일에 패키지를 적어주면 자동으로 AWS에서 설치한다.
참고: https://donghyeok90.tistory.com/197
하지만 람다에는 할당량이 있어서 함수의 용량은 50MB를 초과할 수 없다.
이런 제약을 해소하기 위해 계층(Layer)을 이용한다.
Layer에 패키지들을 미리 설치해놓으면 aws는 람다가 실행될 때 Layer를 붙여준다.
Layer를 이용하면, 공통된 패키지를 사용하는 다른 애플리케이션을 배포할 때도 유용하게 사용할 수 있다.
Lambda의 할당량 참고: https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/gettingstarted-limits.html
2. 사용자 지정 Layer 만드는 방법
Numpy와 Pandas는 용량이 큰 라이브러리라서 requirements.txt 파일에 등록하고 설치하면,
람다의 할당량을 초과해 에러가 발생할 확률이 높다.
따라서 Numpy와 Pandas를 설치한 Layer를 만들어 보도록 하겠다.
1) PuTTY를 사용해 EC2에 SSH 접속한다.
- 아마존 리눅스를 쓰는 Lambda와 같은 OS에 라이브러리를 설치해야 한다.
- 따라서 먼저 EC2에서 라이브러리를 설치하고 나중에 그 파일을 가져오도록 하겠다.
- EC2 접속 참고: https://donghyeok90.tistory.com/119
2) EC2에 파이썬이 없으면 먼저 아나콘다를 설치한다.
아나콘다 설치 참고: https://donghyeok90.tistory.com/120
3) Python 3.9 가상환경을 만든다.(사용할 Lambda의 환경이 Python 3.9이므로)
conda create -n lambda39 python=3.9
4) 가상환경으로 이동한다.
conda activate lambda39
5) 디렉토리를 하나 만든다. 이름은 꼭 python으로!!!
mkdir python
6) python 디렉토리로 이동한다.
cd python
7) pypi.org에서 아마존 리눅스에 설치할 파일을 찾는다.
- numpy와 pandas 그리고 의존성이 있는 pytz 까지 필요하다.
- python 3.9버전 리눅스용 x86_64 설치파일을 찾는다.
- 찾은 설치파일을 좌클릭하지 말고, 우클릭해서 링크주소복사 한다.
8) 링크주소복사한 파일을 EC2에 다운로드한다.
wget 파일url
9) unzip 명령을 이용해서, 위의 3개 파일을 각각 압축 푼다.
unzip 파일명
10) 필요없는 원본 파일(.whl)은 삭제한다.
rm -rf *.whl
11) 상위 경로로 이동한다. (python 폴더가 보이는 경로)
cd ..
12) python 폴더를 압축한다.
zip -r 압축파일명 압축할디렉토리명
zip -r numpy_pandas_layer.zip python
13) FileZilla를 이용해서, 압축한 파일을 내 컴퓨터로 다운로드 한다.
파일질라 참고: https://donghyeok90.tistory.com/133
이제 파일은 준비됐으니 AWS 콘솔에 접속해 Layer를 생성해야 한다.
글이 길어져 다음 포스트에 이어서 하도록 하겠다.
https://donghyeok90.tistory.com/202
'AWS > Lambda' 카테고리의 다른 글
AWS Lambda - Github Actions를 이용한 Serverless CI/CD (0) | 2023.01.12 |
---|---|
AWS Lambda - 사용자 지정 Layer 생성, 추가하기 (2) (0) | 2023.01.12 |
AWS Lambda - serverless 배포 region 변경하기 (0) | 2023.01.11 |
AWS Lambda - App에 필요한 패키지 설치하기. requirements.txt 사용 (0) | 2023.01.11 |
AWS Lambda - Serverless 프레임워크로 테스트 배포하기 (0) | 2023.01.11 |