본문 바로가기
백엔드/Lambda

[Lambda] serverless에 app 적용, Service Unavailable 에러

by eyoo 2022. 6. 28.

전에 만들었던 레시피 프로젝트의 app.py, util.py, config.py, mysql_connection.py, .gitignore 파일과

resources 폴더를 복사하여 붙여넣는다.

 

그 후 레시피 프로젝트에서 사용했던 라이브러리를 requirements.txt에 입력한다.

 

mysql-connector-python
flask-restful
psycopg2-binary
passlib
email-validator
Flask-JWT-Extended
requests

 

이제 deploy 한다.

 

sls deploy

 

 

포스트맨으로 endpoint를 활용해서 API를 작동시키자.

 

# 잘 작동된다.

 

 

디버깅할때는 cloud watch에서 로그의 로그그룹으로 들어가서 /aws/lambda 로 시작하는 로그를 찾는다.

 

# Lambda의 기본 지역이 us-east-1인것에 유의하자.

 

 

로그를 클릭해서 확인한다.

 

# 혹은 람다의 함수에서 cloud watch로 접근할수있다.

 

 

만일 에러가 있으면 error를 찾아 디버깅 한 뒤 deploy한다.

 

sls deploy

 

 

디버깅

 

"Service Unavailable" 에러
 

 

 

포스트맨으로 확인해보니 6초가 살짝 넘는 시간이 걸렸던것을 확인할수있다.

 

# 람다 서버가 US지역으로 설정되어 있기 때문에 시간이 많이 걸린다는것을 가정한다.

 

 

시간이 오래 걸리는 앱을 적용시키려면 람다 함수의 구성의 일반구성에서 제한시간을 늘려준다.

 

# 원래는 6초로 설정되어있다.

 

 

편집을 눌러 제한시간을 1분으로 늘려준다.

 

 

또한 코드의 serverless.yml 파일로 가서 provider 밑에 timeout을 60초로 설정한다.

 

provider:
  name: aws
  runtime: python3.8
  timeout: 60

functions:
  api:
    handler: wsgi_handler.handler
    events:
      - httpApi: '*'

 


 deploy한 뒤 다시 포스트맨으로 send 하면 성공적으로 실행되는것을 확인할수있다.

 

# 처리하는 시간이 17초가 걸렸다.

 

 

 

 

 

댓글