일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코루틴
- pandas
- livedata
- Python
- 암호학
- boj
- 쿠링
- Rxjava
- 코드포스
- MiTweet
- Gradle
- androidStudio
- Coroutine
- architecture
- Compose
- TEST
- textfield
- Codeforces
- ProGuard
- Kotlin
- Hilt
- Coroutines
- GitHub
- MyVoca
- activity
- android
- 프로그래머스
- AWS
- relay
- 백준
- Today
- Total
이동식 저장소
AWS Lambda로 파이썬 코드 실행하기 본문
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 인스턴스를 중지해도 된다.
'Tertiary > Backend' 카테고리의 다른 글
Flask + uWSGI + nginx 환경 설정하기 (0) | 2022.09.17 |
---|---|
Flask, uWSGI, nginx (0) | 2022.09.15 |
Ubuntu에서 메모리가 부족할 때 (0) | 2022.09.14 |
Ubuntu가 시작될 때 스크립트 실행하기 (0) | 2022.08.31 |
AWS Eventbridge로 EC2 재시작하기 (0) | 2022.08.30 |