본문 바로가기
개발/AWS

[AWS] API Gateway로 API를 만들어보자 3 : Lambda 함수 만들기

by 유다110 2016. 11. 30.
반응형
나는 facebook의 휴나지움(연세대 공학원 학생식당) 페이지에서 메뉴를 긁어왔는데 그냥 

def sum(x, y):

result = x + y

return result

이런 함수를 만들어도 괜찮다.

일단은 API를 만들어보고 이해하기 위함이니까...


내 코드는 이렇다.



_hunasiu,_menu()는 당연히 휴나지움의 메뉴를 str 형식으로 긁어오는 함수다.

중요한 것은 lambda_handler()다. 이건 함수명도 굉장히 중요한데, 

[AWS] API Gateway로 API를 만들어보자 2 에서 미리 말한 바 있지만,

AWS Lambda에서 아래와 같은 식으로 handler를 정의해야 하기 때문이다.


어쨌든 저렇게 하고 이를 zip 파일로 만들어 업로드하면 된다.

** pip을 사용해 기본 라이브러리가 아닌 모듈을 받을 필요가 있을 경우, linux 창에서 아래와 같이 함수를 실행해 본다.

$ python menu_lambda_function.py

Traceback (most recent call last):

  File "menu_lambda_function.py", line 3, in <module>

    import facebook

ImportError: No module named facebook


내 경우에는 facebook 모듈을 필요로 했다.

그게 뭐든지간에 필요하다면 아래와 같이 해당 폴더 아래에 모듈을 받는다.

$ sudo pip install {모듈이름} -t ./


그러면 

{모듈이름}

{모듈이름}-0.0.dist-info

이런 파일이 한 두개 생길 것이다.

이걸 내 python 파일과 함께 zip파일로 묶어 업로드하면 된다.


전부 완료했으면 이제 API Gateway 페이지로 가서 내 API를 테스트해보자.

쨔쟌~

오른쪽 Response Body에 성공적으로 휴나지움의 메뉴가 나왔다.



* 물론 API를 만들 때 response를 저렇게 막무가내로 하면 안 된다.

웬만하면 json 형태로 모두가 알아볼 수 있게 파싱해서 주자.

* Lambda python 함수를 만들 때 반드시 test 파일을 따로 만들어 업로드 전 모든 API 함수를 테스트해야 한다.

하나면 몰라도 API가 수십 개로 늘어나게 되면 그만큼 못보고 지나치는 오류가 잦아지게 되는데,

최악의 경우에는 업로드한 뒤 API 전체가 먹통이 되는 경우도 있다...(물론 내 얘기다.)




반응형

댓글