개발학습일지

[Serverless] 서버리스가 주는 템플릿으로 서버 배포 할 때 오류 -> 해결방법 2가지(V4 / V3) 본문

AWS/Serverless

[Serverless] 서버리스가 주는 템플릿으로 서버 배포 할 때 오류 -> 해결방법 2가지(V4 / V3)

처카푸 2024. 5. 23. 13:34

서버리스가 주는 템플릿으로 $ sls deploy 할 때 오류 -> 해결방법 2가지 V4, V3

 

오류 발생

: $ sls deploy로 서버 배포했는데 오류가 발생했다.

 

오류 이유 

: 서버리스의 wsgi 관련해서 더 설치를 하라는 오류 문구인 것 같다.

 

해결 방법

: $ serverless plugin install -n serverless-wsgi 설치   <- 예전 버전

: $ npm install serverless-wsgi --save-dev  <- 최신 버전

예전 버전은 오류가 발생했고 최신버전으로 하니 설치가 잘 되었다!

 

다시 오류 발생

: 설치를 하고 $ sls deploy를 했을 때, 또 다른 오류가 발생되었다.

 

두 번째 오류 이유

: 읽어야 하는 파일이 너무 많아서 오류가 발생된 것 같다. _ too many open files

 

두 번째 오류 해결 방법

: 상관 없는 파일들을 제외시켜 주는 코드를 yml 야믈 파일에 작성해 준다.

package:
  individually: true
  exclude:
    - node_modules/**  # node_modules 폴더와 그 하위 모든 파일 및 디렉토리 제외
    - .git/**  # .git 폴더와 그 하위 모든 파일 및 디렉토리 제외
    - tests/**  # tests 폴더와 그 하위 모든 파일 및 디렉토리 제외
  include:
    - src/**  # src 폴더와 그 하위 모든 파일 및 디렉토리 포함
    - handler.py  # 루트 디렉토리의 handler.py 파일 포함
    - config/**  # config 폴더와 그 하위 모든 파일 및 디렉토리 포함

 

해결 완료

: $ sls deploy 마침내 서버가 배포되었다

 

 


추가 해결방법

문제 원인

: Serverless 버전 문제!!

: 내가 처음에 사용한 Serverless 버전은 아주 최근에 업데이트된 V 4.0.26 (2024-05-23) 이다.

 

문제 해결

: 내가 사용하는 버전이 너무 최근에 업데이트된 버전이라 버그가 생겨 다운 그레이드 해줬다.

: V 3.38.0 (2023-11-21) 사용

$ npm install -g serverless@3.38.0

 

: 그리고 한국리전을 사용하기 위해서 serverless.yml 파일의 맨 위에 부분을 이렇게 바꿔줬다.

: 처음부터 V3을 이용하면 frameworkVersion: '3' 쓰여있고, 다운그레이드했다면 꼭 적어주자!

service: aws-memo-server

frameworkVersion: '3'

custom:
  wsgi:
    app: app.app

provider:
  name: aws
  runtime: python3.10
  region: ap-northeast-2

: 이렇게 했는데 wsgi 쓰여있는 오류가 뜬다면,

$ serverless plugin install -n serverless-wsgi 설치 해준다.

 

해결 완료

: 버전을 변경하니 배포가 잘 되는 것을 확인할 수 있었다.

: V 3을 이용하면, 

$ serverless plugin install -n serverless-wsgi / $ npm install serverless-wsgi --save-dev

위에서 해결했던 방법 모두 안 해도 된다.

 


* 서버리스 버전 Github

https://github.com/serverless/serverless/releases

 

Releases · serverless/serverless

⚡ Serverless Framework – Use AWS Lambda and other managed cloud services to build apps that auto-scale, cost nothing when idle, and boast radically low maintenance. - serverless/serverless

github.com