고인물을 지양하는 블로그

[Serverless] AWS lambda에 배포했던 크롤러 유지보수 본문

카테고리 없음

[Serverless] AWS lambda에 배포했던 크롤러 유지보수

yunjaeGong 2022. 1. 29. 23:24

이전 글에서 프로젝트 구성 요소들의 선택 과정, 매우 간단한 튜토리얼을 작성했었는데 학부 도메인과 페이지가 이사했다는 소식..을 듣고 코드 수정 & 배포를 다시 진행했다.

 

 

[Severless] 학부 공지사항 크롤러 (AWS Lambda + 크롤러 + Google Sheet => Email)

왜 갑자기 크롤러인가? 학과에 최근 1년 들어 졸업요건이 추가되거나, 교과목이 추가되거나, 갑자기 캡스톤이 바뀌거나 하는 등 갑작스레 변화의 바람이 불어 휴학 중이라도 학교와 단절되면 안

yunjae-gong.tistory.com

그런데 프로젝트만 띡 만들고 추후 유지보수에 필요한 배포 과정(dependency와 코드, 계정 접속 정보 등..)을 어떻게 패키징 하는지를 하나도 적어두지 않아 다시 도큐먼트를 참고해 배포하게 되었다.


배포는 어떻게?

도큐먼드 zip 파일, 컨테이너 이미지로 배포하는 방법을 상세하게 적어둬 이 글을 참고했다. 

 

lamba에 업로드할 zip 파일에는

1. 작성한 코드

2. 작성한 코드에서 필요로 하는 라이브러리 (파이썬 standard 라이브러리 이외)

3. 이외 필요한 파일들 e.g. spreadsheet service account 인증에 필요한 파일

 

등 프로젝트 관련 파일이 필요하다.

여러 번 업로드 하며 아래와 같은 방법들이 편리했다

 

1. 코드를 복사해 새 프로젝트로 생성, 패키지가 설치된 폴더(venv 기준 venv/lib/python버전/site-packages/)

2. requirements.txt 생성, 하위폴더에 pip install -r requirements.txt -t 하위폴더명 

 

둘 다 장단점이 있겠지만, requirements.txt를 어떻게 만들지 모르겠고 귀찮다면 1번도 나쁘지 않은 방법이다.

더보기

pycharm에서 requirements.txt 만드는 법

 

1. pip freeze > requirements.txt

2. pycharm tools / sync python requirements

이후 필요한 파일들을 통채로 zip 파일로 묶어 lambda에 업로드 하면 배포가 끝난다.

 


Troubleshooting

도메인과 각 요소의 위치만 변경되었기에 크게 문제가 발생하지는 않았다. 

다만 배포용 코드에 테스트/배포용 코드가 뒤섞여있어 이를 분리하는 과정에서, 본래 main.py이던 파일명을 board_crawler_lambda.py로 변경한 후 lambda에 업로드 후 테스트를 진행했다.

 

테스트 이벤트 발생했을 때 진행할 동작을 작성하지는 않았었지만, 이와는 별개로 문제 없이 실행은 되어야 하는데

lambda 테스트 실패 : main

문제가 발생했다. (캡처한 사진을 이 글에 업로드 한 줄 알고 스크린샷을 싹 다 정리했는데 업로드를 안해서 사진은 없다.)

 

큰 문제는 아니었고 단순히 런타임에서 main.py 파일을 찾을 수 없어 발생한 문제였다.

 

aws lambda python 튜토리얼

위처럼 런타임 경로를 바뀐 경로로 수정하면 해결된다.

파일명.함수명으로 핸들러 경로를 변경한다.

 

CloudWatch

 

잘 동작함을 알 수 있다.


참조

 

Comments