일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Compose
- Codeforces
- androidStudio
- 암호학
- livedata
- 코드포스
- 프로그래머스
- Hilt
- MiTweet
- Python
- 코루틴
- 백준
- AWS
- textfield
- GitHub
- Rxjava
- pandas
- activity
- architecture
- boj
- Kotlin
- Coroutine
- ProGuard
- 쿠링
- MyVoca
- android
- TEST
- Coroutines
- Gradle
- relay
- Today
- Total
이동식 저장소
AWS Lambda로 파이썬 코드 실행하기 본문
AWS 자동화와 관련된 글을 쓴 적이 있다.
나는 코드를 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에서는 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 |