관리 메뉴

밤 늦게까지 여는 카페

AWS Lambda python3.8 런타임 지원 종료로 인한 런타임 변경 작업기 - 고마워요 AWS SAM CLI! 본문

aws

AWS Lambda python3.8 런타임 지원 종료로 인한 런타임 변경 작업기 - 고마워요 AWS SAM CLI!

Jㅐ둥이 2024. 10. 13. 08:48

안녕하세요. 이제 날씨가 아침, 밤으로는 춥고 낮에는 햇살이 뜨겁더라고요.

 

이번에는 AWS Lambda python3.8 런타임 지원 종료로 인한 런타임 변경 작업을 간단하게 정리하려고 합니다.

 

간단한 작업일 줄 알았는데 예상치 못한 라이브러리 문제를 겪으면서 당황했었네요 ㅋㅋㅋ쿠ㅠ


1. 그럴 듯했던 계획

처음에는 매우 간단한 작업이라고 생각했습니다. 파이썬 런타임만 변경하면 되니깐요?

  1. 로컬 환경에서 python 3.12로 변경하고 테스트
  2. 파이썬 런타임 변경하고 AWS Lambda 배포 (SAM 이용)
  3. 정상 동작 테스트!

 

로컬 환경에서 실행할 때 사용하는 도커 이미지를 python:3.12로 변경하고 실행해봤습니다.

결과는 대성공!

 

이제 파이썬 런타임 변경하고 AWS Lambda에 배포하면 되겠죠?

 

2. Internal Server Error...?

얼른 서비스 배포를 마치고 일을 마무리 하려고 하는데 이상합니다.

원래 1초도 안되서 조회가 되는 Swagger 페이지가 접속이 안됩니다.

 

30초가 지나니 Internal Server Error가 발생하더라고요;;;

이 때 너무 당황했습니다 ㅋㅋㅋㅋ

 

로컬 환경에서는 아무 문제 없이 실행되는데 어째서 AWS Lambda로 배포하면 문제가 생기는 걸까요?

 

일단 파이썬 런타임을 3.8로 변경하고 생각할 시간을 가졌습니다...

 

"문제를 로컬 환경에서 재현할 수만 있다면 해결할 수 있을텐데..."

 

3. 구세주 AWS SAM CLI! - psycopg2

저는 AWS SAM CLI를 이용해서 Lambda 배포를 하고 있었습니다.

AWS Serverless Application Model

 

그런데 SAM CLI에 로컬 환경에서 배포한 것처럼 테스트 할 수 있는 기능이 있더라고요!

바로 sam local start-api 입니다!

구세주 ㅜㅠ

 

sam local start-api를 이용하니 로컬 환경에서 컨테이너가 실행될 때 발생하는 에러 메시지를 확인할 수 있었습니다.

 

P.S.

발생했던 에러는 psycopg2 라이브러리가 없다는 에러였습니다.

psycopg2 모듈이 없다는 에러

 

흥미로웠던 것은 psycopg2 라이브러리를 설치하려고 하면 다음과 같은 에러가 발생합니다.

psycopg2 라이브러리 설치에 실패

 

아니 psycopg2 라이브러리가 없다고 해서 psycopg2 라이브러리를 설치하려고 하니 에러가 발생하면 어떡하죠?

 

해답은 생각보다 간단했습니다.

psycopg2 라이브러리를 설치하는 것이 아니라 psycopg2-binary 라는 패키지를 설치하면 되더라고요.

 

나중에 시간이 된다면 psycopg2 라이브러리 설치에 실패한 이유도 조금 더 구체적으로 알아봐야 할 것 같습니다!

반응형