S3에 파일이 업로드 되면 해당 객체의 Key 정보를 활용해 AI 학습서버의 스크립트를 실행시키는 부분을 담당했다.
Python의 paramiko 라이브러리를 사용하여 스크립트를 실행, 이 과정에서 필요한 외부 라이브러리를 Lambda에 추가하는 과정을 작성해보았다.
AWS Lambda 런타임에서 외부 라이브러리를 사용하려면 로컬에서 코드/라이브러리 파일을 zip
으로 압축하여 업로드해 사용한다. (처음에는 받아드리지 못했다. 진짜..? 너가 안해줘...? 이런 반응이었다.)
먼저 zip 파일로 코드/라이브러리를 압축할 때 최상위 폴더 경로는 다음 표를 참고하자
로컬에 python 폴더를 생성한 뒤, paramiko 라이브러리를 다운로드 받아주자.
다운로드 받을 코드/라이브러리는 실제 Lambda의 런타임과 호환이 되어야 한다. 플랫폼(OS) 아키텍처, 파이썬 버전 등이 맞지 않으면 에러가 난다.
그래서 해결 방법 찾아왔다...
$ mkdir python
$ cd python
$ pip3 install --platform manylinux2014_x86_64 --target . --python-version 3.12 --only-binary=:all: paramiko
$ cd ..
$ zip -r layer.zip python
AWS Lambda 서비스로 이동 후 "계층 생성" 버튼을 클릭해주자.
트리거를 생성하고 이벤트를 거는건 범위 밖이라 판단해서 생략한다.
AWS Lambda -> 함수 생성
방금 생성한 Lambda 함수를 선택한 다음, 화면을 내리면 계층 섹션이 보인다. (Add a layer 클릭)
AWS Lambda Docs
AWS Lambda with S3 Docs
AWS Lambda Python Docs
플랫폼/파이썬 버전 트러블 슈팅
Lambda에 외부 라이브러리 Import 하기