AWS

AWS lambda layer 추가(numpy+pandas)

leopard4 2023. 1. 11. 16:00

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개가 확인된 모습