AWS Lambda에 장고를 올리는 방법

황혁주·2023년 2월 9일
0

스타트업 적응기

목록 보기
1/2

Zappa 배포

Zappa 배포 방법

  1. aws iam 계정 생성
  2. /.aws/credentials 파일 작성
  3. virtual envrionment 생성
  4. pip 를 이용해서 Zappa 모듈 설치
  5. 쉘에서 django 프로젝트 디렉토리 에서 zappa init 입력
  6. zappa setting.json에 세팅 값 입력
    1. 꿀팁
      1. "touch" : false 세팅으로 get 호출을 멈출 수 있음
        1. touch 옵션은 “/”엔드포인트에 get 호출을 해서 정상 작동 하는지 확인하는 옵션
      2. "delete_s3_zip": false 세팅으로 버전별 빌드 파일을 s3에 저장 가능
        1. default 세팅은 true값으로 s3에 업로드 후 자동으로 삭제 됨
  7. 쉘에서zappa deploy dev / prod / stage 명령어로 배포
  8. 이후 업데이트 시 zappa update dev / prod / stage 쉡에 입력

Zappa 작동 원리

  1. venv에서 zappa 모듈 찾음
    1. 배포하는 환경이 venv가 아니면 안됨(에러 발생함)
  2. 프로젝트의 manage.py 를 찾아서 lambda handler 함수 작성
  3. 작성된 함수들을 .zip 파일로 생성
  4. 연결된 AWS IAM 을 통해서 Role 생성, S3 버킷 생성 후 파일 업로드
  5. AWS Lambda에 파일 이동 후 Zappa에서 Event Trigger, APIGate 구축

→ 모든게 zappa deploy/update 하나로 끝남

Zappa Django Deploy 시

도입점

  • Django를 AWS Lambda에 올리기 매우 쉬운 라이브러리
  • 단순 aws credential 작성 후 zappa deploy 명령어로 배포 가능
  • Github Action을 연동 시 손쉽게 CI/CD 파이프라인 구축 가능

한계점

  • 최초 Zappa로 Deploy시 로컬 터미널에서 배포해줘야함
  • AWS가 아닌 타 클라우드 플랫폼에서 사용 불가
  • lambda layer는 아직 지원 안함
  • .env, model, 중요 로직이 바뀌었을 때 동시에 바꿔줘야함
    • 특히 .env파일이 바뀌면 로컬 터미널에서 zappa 라이브러리를 이용하여 update, deploy를 해줘야함
    • 혹은 git secret을 업데이트 해서 배포 해야함
  • .env 파일을 github action을 이용해서 옮기는 방법에서 문제점 발생
    • .env 파일이 있지만 읽지 못하는 상황(추측) 발생
      • 지속된 502 에러 발생
      • 로컬에서 똑같은 소스로 update시도 후 호출 → 정상작동
    • 문제점을 제대로 파악하지 못함

도입 문제점

  • lambda_handler를 찾지 못함
    • Zappa Build시 lambda_handler를 만들어 주는데, aws lambda에서 핸들러를 찾지 못해 함수 구동에 문제가 생김

→ 해결: Zappa 라이브러리 안에 있는 lambda_handler 파일을 직접 지명해서 해결

주의점

  • 깃액션에서 venv 를 구성하고 바로 zappa 배포를 하는게 좋음
    • 잘못된 세팅으로 인해서 venv 환경 자체가 올라가지 않는 상황이 발생할 수 있음
      • 터미널에서 배포할 때와 깃액션으로 배포되는 패키지의 용량이 지나치게 차이나면서 알게되었음

첨언

  • 굳이 django를 Zappa에 올리는것 보다는 그냥 lambda 함수를 파이썬으로 짜서 올리거나, node를 활용해서 올리는게 훨씬 맘편하고 좋을것 같습니다.

현재 상황

  • python3.7.15, django=3.2.6, zappa=0.56.1로 구축
  • github action workflow로 자동 CI/CD 파이프라인 구성
    • Test과정만 생략되있음
profile
초보 개발자입니다.

0개의 댓글