AWS lambda layer 추가(numpy+pandas)
aws linux
lambda layer 추가(numpy+pandas)
1. putty 로 ec2접속(람다가 아마존 리눅스기 때문에 같은 OS로 접속)
2. 파이썬이 없으면, 먼저 아나콘다 설치
3. 람다의 환경이 파이썬 3.9이므로,
가상환경 만든다.
conda create -n lambda39 python=3.9
4. 가상환경으로 이동
5. 디렉토리를 하나 만든다. 이름은 python(소문자) 으로 !
6. python 디렉토리로 이동
cd python
7. 아마존 리눅스에 설치할 넘파이와 판다스 파일을 찾는다.
https://pypi.org 에서 !!
검색하고 좌측에 다운로드 linux 버전 링크주소를 복사한다. cp39 가 파이썬3.9 라는뜻
8. numpy, pandas , pytz 를 찾아서 ec2에 다운로드 한다. (pytz는 종속성이라서 같이받음)
$wget 파일url
9. unzip 명령을 이용해서, 위의 3개 파일을 각각 압축 푼다.
$unzip nump.......whl
(한번에 다풀기 unzip '*.whl')
10. 필요없는 원본 파일(.whl) 은 삭제해 준다.
$rm -rf 파일명(폴더명)
(참고, 파일명에 단어가 포함된 파일들을 모두 처리하고싶을때)
$rm -rf *.whl
11. 상위 경로 이동한다 (python 폴더가 보이는 경로)
$cd ..
$ls -al
12. python 폴더를 압축한다.
$zip -r 압축파일명 압축할디렉토리명 (r의 의미는 해당 폴더안의 폴더나 파일도 같이 처리하라는것)
$zip -r numpy_pandas_layer_39.zip python
13. 파일질라를 이용해서, 위의 파일을 내 컴으로 다운로드 한다.
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는 빼야 한다.
(이미 레이어에서 설치해서 제공하니까 )
21.계층을 추가해도 모듈 에러가 뜨는 이유는 종속성 디펜던시 때문
클라우드 왓치 로그를 확인해서 종속성도 같이 압축해서 다시 계층을 만들어야한다.
는 귀찬으니까 애초에 ec2 가상환경에서 pip install "패키지이름" 하면
자동으로 종속성이있는것이 콜렉션- 다운로드 부분에 확인된다.
pypi에 검색- 좌측슬라이드바- 해당버전확인 - wget 한다.
wget도 하나씩 해야되서 귀찮다.
종결: pip install flask-jwt-extended -t /home/ec2-user/python --upgrade (-t옵션을 줘서 애초에 python 디렉토리로 경로지정을 한다) 하다보면 이미 있다고 경고 띄우는데 --upgrade 해서 덮어씌워버리면 편하다.
pip install email-validator 를 했더니
종속성 email-validator, idna, dnspython 총 3개가 확인된 모습