이동식 저장소

AWS Lambda로 파이썬 코드 실행하기 본문

Tertiary/Backend

AWS Lambda로 파이썬 코드 실행하기

해스끼 2022. 9. 4. 19:48

AWS 자동화와 관련된 글을 쓴 적이 있다.

 

AWS Eventbridge로 EC2 재시작하기

Eventbridge를 사용하면 이벤트에 자동으로 대응할 수 있다. 나는 매일 EC2 인스턴스를 재시작하기 위해 eventbridge를 사용한다. 규칙 만들기 Eventbridge > 규칙으로 이동하여 새 규칙을 만들자. 이름과

thinking-face.tistory.com

 

Ubuntu가 시작될 때 스크립트 실행하기

EC2에서 파이썬 스크립트를 실행하는데, 너무 오래 켜놔서 그런지(5일 이상...) 프로세스가 죽는 사태가 발생했다. 고심 끝에 하루마다 서버를 재시작하고, 서버가 재시작될 때 파이썬 파일을 자

thinking-face.tistory.com

나는 코드를 1분에 한 번씩 실행하고 싶었다. 맨 처음에는 무한 루프 안에서 코드를 실행한 후 sleep하는 방법을 구현했다.

import time


while True:
    do_work()
    time.sleep(60) # 60초 동안 sleep

물론 완벽히 동작하기는 하지만, 여러모로 마음에 들지 않는 구현이었다. 메인 스레드를 block하기도 하고, 가장 큰 이유는 비싸디 비싼 EC2를 24시간 점유한다는 점이다! 무려 시간당 1센트!

 

프리 티어가 있긴 하지만, EC2로 처리해야 할 더 복잡한 작업이 생겨서 다른 방법을 찾아보기로 했다. 그러다가 AWS Lambda를 알게 되었다.

Lambda?

AWS Lambda를 사용하면 서버 없이 코드를 실행할 수 있다. 서버가 없는 만큼 대규모 시스템을 굴릴 수는 없지만, 내 코드는 기껏해야 파이썬 파일 1개에 불과하므로 Lambda를 사용하기 딱 좋다. 심지어 매달 100만 번까지는 무료~

 

AWS에서는 하나의 Lambda 객체를 함수라고 부른다. 함수에서 실행할 수 있는 언어는 Node.js, Python 등이 있다. 나는 Python 3.9를 선택했다.

파이썬 코드에서 외부 라이브러리를 사용한다면 다음 글을 참고하자.

 

[AWS] 람다에서 Python 패키지 사용하기 | Layer(계층)란?

맨날 하는데 맨날 까먹고 찾아보길래 직접 정리해보려고 한다. 람다에서 python을 실행하는데 이런 오류가 났다면? 패키지가 없는것이다! Unable to import module 'lambda_function': No module named 'requests'..

pearlluck.tistory.com

함수를 만들었으니 트리거를 추가할 시간이다.. 트리거를 사용하면 특정 이벤트가 발생했을 때 함수를 실행할 수 있다. AWS에서는 EC2뿐만 아니라 RDS, S3 등 모든 서비스가 트리거를 활성화할 수 있다. 

 

나는 매 1분마다 코드를 실행하기 위해 Eventbridge에서 다음과 같은 cron 식을 작성하였다. 요일 파라미터가 있다는 점이 특이하다.

트리거를 설정했으니 이제 코드를 작성하자. 로컬에서 작성하던 코드를 복사한 후 deploy 버튼을 눌러 변경 사항을 반영한다. 원한다면 Test 버튼을 눌러 코드를 테스트할 수 있다. 

 

코드가 정상적으로 동작한다. 이제 EC2 인스턴스를 중지해도 된다.

Comments