운동하는 공대생

AWS Lambda(layer-계층 생성하기) 본문

AWS/Lambda

AWS Lambda(layer-계층 생성하기)

운동하는 공대생 2022. 10. 7. 16:08
728x90
반응형

최근에 AWS Lambda에서 기본적으로 제공하지 않는 라이브러리 르 사용하는 방법에 대하여 이전에 글을 작성을 하였었다.

하지만 생각보다 직접 성공을 하는 시간이 오래걸려서 성공하는 과정에서 있었던 일들을 조금 정리해 보려고 한다.

경로 문제

먼저 제일 처음 겪었던 문제는 함수를 파일들을 다운받아서 .zip 형식으로 저장하여 계층 생성을 완료하였는데 함수가 찾아지지 않는다는 에러였다.

처음 이 에러를 격었을 때는 다운하고 파일을 압축했을 때 그 파일을 인식하지 못했나라고 생각을 했지만 여러 번의 계층을 생성하고 지우기를 반복하여 이 방식에서의 문제가 아니라고 판단을 하였다.

이후에 계층을 만드는 방식에 대하여 찾아보다가 AWS에서 제공하는 공식 자습서에서 답을 찾았다.

출처: https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/configuration-layers.html

위의 사진과 같이 계층을 생성하기 위한 .zip 파일은 모두 python이라는 폴더 경로를 지정하고 압축을 해주어야 한다.

버전 문제

경로 문제를 해결하고 이후에는 제일 큰 문제로 버전의 문제가 있었다. Lambda에서 제공해주는 python 런타임의 종류는 3.7, 3.8, 3.9를 주로 사용했는데 여기서 외부 함수를 사용할 때 발생하는 문제는 각 외부 함수와 그리고 python의 버전을 맞혀주어야 한다는 것이었다. 버전을 맞춰주지 않으면 함수에서 사용하는 기본 라이브러리와 외부 라이브러리가 충돌이 발생하여 원하는 함수를 사용하지 못하는 무제가 발생하였다. 이를 해결하기 위해서 나는 파이썬의 버전을 낮춰서 외부 함수를 다운을 받았다.

 
!python3 --version #버전을 체크
# 숫자 부분에 자신이 원하는 Python 버전을 입력하여 버전을 변환 한다.
!wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
!tar xvfz Python-3.9.0.tgz
!Python-3.9.0/configure
!make
!sudo make install

test Lambda에서 런타임 3.7 python 버전을 사용하여서 버전에 맞게 colab python 버전을 변환하였고 이후에 구글 드라이브와 연동하여 파일을 업로드하고 다운로드하였다.


!pip install scikit-leran==0.23.1 -t ./drive/MyDrive/python

이렇게 하여 버전, 용량, 그리고 경로 모두 신경을 써줘야 정상적으로 계층을 추가하는 게 가능하고 Lambda 함수와 연결이 된다.

 이렇게 원하는 sklearn 모델을 호출하고 결괏값이 나오는 모습을 볼 수 있다. 추가적으로 같이 외부 함수로 포함하여 추가했던 numpy와 joblib 함수도 잘 호출이 되는 걸 확인이 가능했다.

 

(2주 정도 혼자 공부하면서 시간이 더 걸렸네요 다음에 xgboost도 성공하면 추가로 업로드하겠습니다.)

728x90
반응형

'AWS > Lambda' 카테고리의 다른 글

Docker Container Image 로 AWS Lambda 함수 구현  (0) 2022.10.31
AWS Lambda 에서 외부 API 호출하기(OCR)  (0) 2022.10.11
AWS Lambda(layer)  (0) 2022.10.06
AWS Gate Way(Lambda)  (1) 2022.09.21
Comments