Lambda에 Python 프로젝트 업로드하기
Docker를 사용한 프로젝트 압축
AWS Lambda에 Flask 서버를 업로드하는 절차에 대해 정리합니다.
Lambda docker 이미지 준비
아래 명령어를 사용하여 lambda 이미지를 준비합니다. lambda에서 사용할 python 3.8 이미지를 준비하였습니다.
docker pull amazon/aws-lambda-python:3.8
로컬의 소스코드 디렉토리와 도커를 연결하여 실행하도록 합니다.
docker run -it \
--volume /Users/username/Documents/repo-name:/app \
--entrypoint '/bin/sh' \
--name="aws-lambda-38" \
amazon/aws-lambda-python:3.8
zip 패키지를 설처합니다
yum install update
yum install zip
프로젝트 압축
#!/usr/bin/env bash
ARCHIVE_FILENAME="output/lambda.zip"
[ -e "$ARCHIVE_FILENAME" ] && rm "$ARCHIVE_FILENAME"
# 패키지를 압축
SITE_PACKAGES_PATH=$(python -c "import site; print(site.getsitepackages()[0])")
cd "$SITE_PACKAGES_PATH"
zip -r9 "$OLDPWD/$ARCHIVE_FILENAME" .
cd -
# 관련 코드를 압축
zip -gr9 "$ARCHIVE_FILENAME" your_project/ your_conf.toml
위 내용을 스크립트로 작성 한 뒤 도커에서 실행합니다. output/lambda.zip
파일이 생성됩니다.
생성된 압축파일을 lambda 업로드하면 하여 구성을 마무리합니다.
정리
규모가 비교적 큰 프로젝트를 lambda에 구성해야 할 때 코드를 lambda editor로 작성하기는 힙듭니다.
사용할 lambda와 동일한 도커 이미지를 사용하여 프로젝트를 압축하여 업로드 하는 방법을 사용하는것 관리면에서 유리합니다.
업로드 과정도 aws cli를 사용하여 자동화 가능하며 lambda 배포가 자주 필요하다면 구현하는것도 좋습니다.
github 과 CircleCI를 연동하여 CircleCi에서 압축 후 업로드까지 하는 방법을 추천합니다.