티스토리 뷰

서버리스 Dependency 설치 (feat: lambda)

공부정리중

목차

  • 실행 확인
  • 환경파일 확인
  • python 도구를 이용하여 dependency 파일 한번에 설치하기

 

실행확인

 내가 짜놓은 코드가 servelress 파일이 제대로 동작하는지 확인하는 방법 offline 도 있다고 들었지만, 현재 내가 배우고 있는 교제에서는 docker의 public.ecr.aws/lambda/nodejs:[node버전] 의 방법을 이용하여 테스트가 가능하다

# nodejs 18버전 app.handle 이 실행파일인 경우
docker run -it -p 8080:8080 -v $PWD:/var/task public.ecr.aws/lambda/nodejs:18 app.handler

# curl test
curl localhost:8080/2015-03-31/functions/function/invocations -d '{"payload": true}'

 

환경파일 확인

 예제로 jpeg 이미지 최적화 파일인 jpegoptim 을 예제로 기록한다. lambda 는 리눅스 이기 때문에 맥이나 윈도우에서 확인할 경우 문제가 생길수 있음으로 ubuntu 도커를 실행하여 내부에서 실행한다. ubuntu:latest

# ubuntu 도커 실행
docker run -it ubuntu:latest /bin/bash

필요파일 설치

# jpegoptim 설치
sudo apt install jpegoptim

# 동적 라이브러리 설치 파일 목록 확인
ldd $(which jpegoptim)

위에 명령어를 입력하면 여러가지 목록이 나올것이다.  람다에서 jpegoptim을 설치하려면 2가지 방법중에 하나를 택해야한다.

  • ldd 실행 결과를 모두 함께 lambda 에 복사하여 사용
  • jpegoptim 소스를 람다 내부에서 정적으로 연결하여 다시 빌드

편하기는 후자가 편하지만, 빌드도중에 문제가 생기는 경우가 가끔 생기기도 한다. 그렇다면 전자의 방법을 택해야하는데, 다행히 jpegoptim은 필요 파일들이 별로 없지만, 상황에 따라서 몇백개가 넘는 dependency 파일이 있을 경우가 있다. 이때를 대비하여 파이썬 툴을 사용하여 한번에 처리하고자 한다.

python 을 이용하여 한번에 도구 설치하기

ubuntu 내부에서 bash 명령어로 필요한 툴들을 설치

# 파이썬 설치
sudo apt install -y python3 python3-pip

# exodus 설치
pip3 install --user exodus-bundler

# 환경설정
export PATH="${PATH}:${HOME}/.local/bin"

# exodus 실행
exodus -t -o jpegoptim.tar.gz $(which jpegoptim)

위에 명령을 통하여 exouds 는 jpegoptim 의 필요 dependency들을 jpegoptim.tar.gz에 압축하여 보관한다.

이제 도커내부에서 압축된 jpegoptim.tar.gz 를 나의 맥북으로 복사해오는 방법

docker cp [CONTAINER_ID]:/root/jpegoptim.tar.gz

 

압축을 풀어보면, exodus 폴더가 생성될 것이다. 그안에서 bin 폴더에 들어가면 실행파일들이 노출된다.

 

마무리

개발할 때 내 컴퓨터에서는 되는데 람다에서는 안되는 경우를 마주치고 싶지 않다면, lambda 도커에서 실행 필요한 dependency들은 ubuntu 도커에서 exodus로 뽑아와서 사용하자.

'AWS > 서버리스' 카테고리의 다른 글

서버리스 이미지 최적화 공부  (0) 2023.06.05
댓글


최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday