반응형

Lambda 함수와 API Gateway를 사용하여 REST API를 구현해봅니다. 

익숙하지 않은 분야라 이상한 점이 있을 수 있습니다.



2021. 9. 30 - 최초작성



Lambda는 코드를 작성한 다음 이벤트에 연결할 수 있는 서버리스 컴퓨팅 환경입니다.  이벤트가 발생하면 코드가 실행됩니다.  여기에선 REST API와 람다 함수를 연결하여 사용합니다.



Lambda 함수가 동작하려면 다음 3가지가 필요합니다.

 

  • 핸들러를 정의해야 합니다.  Lambda 함수의 진입점입니다. Lambda 함수는 JSON 형식의 입력을 받으며 보통 JSON 형식으로 결과값을 리턴합니다.

 

  • Lambda에 대한 런타임 환경을 지정해야 합니다. Lambda 함수를 작성하는데 사용한 언어를 선택해줍니다.

 

  • 이벤트를 발생시키거나 또는 전달하는 트리거입니다.




우선 Lambda 함수를 작성합니다.

 

AWS 관리 콘솔 사이트(https://aws.amazon.com/ko/console/ )에 접속하여  로그인 후,  왼쪽 상단에 보이는 서비스를 클릭합니다. 

 

 

서비스 목록에서 컴퓨팅 항목에 있는 Lambda를 클릭합니다. 

 

오른쪽 상단에 보이는 함수 생성 버튼을 클릭합니다. 

 

상단에 새로 작성이 선택된 상태에서 함수 이름을 적은 후, 런타임 Python 3.9로 변경합니다. 이제 오른쪽 하단에 보이는 함수 생성을 클릭합니다. 




다음 코드를 복사해서 붙여넣은 후, Deploy 버튼을 클릭합니다.



def lambda_handler(event, context):

  number1 = event['Number1']
  number2 = event['Number2']
  sum = number1 + number2
  product = number1 * number2
  difference = abs(number1 - number2)
  quotient = number1 / number2

  return {
      "Number1": number1,
      "Number2": number2,
      "Sum": sum,
      "Product": product,
      "Difference": difference,
      "Quotient": quotient
  }

 




Test 버튼 옆에 있는 역삼각형 아이콘을 클릭하여 보이는 메뉴에서 Configure test event를 선택합니다.

 




이벤트 이름을 적은 후,  다음 코드를 복사하여 붙여넣고 생성 버튼을 클릭합니다.

 

    "Number1": 2, 

    "Number2": 3 

}

 




Test 버튼을 클릭하여 실행합니다. 다음과 같은 실행결과가 보입니다. 

 




트리거를 통해 이벤트를 전달받아 Lambda 함수가 실행됩니다.

여기에서는 API Gateway를 트리거로 사용하여 Lambda 함수에 대한 REST API를 생성합니다.  



트리거 추가를 클릭합니다.

 



API 게이트웨이를 선택합니다.

 




API 유형으로 REST API를 선택하고 보안열기를 선택한 후, 추가 버튼을 클릭합니다. 

 




이제 트리거 항목에 API 게이트웨이가 추가되었습니다. 

 





API Gateway에서 제공하는 쿼리 파라미터를 사용하려면 Lambda 함수를 업데이트해야 합니다.

Lambda 함수 코드를 다음과 같이 변경합니다.

 

import json

def lambda_handler(event, context):

  number1 = int(event['queryStringParameters']['Number1'])
  number2 = int(event['queryStringParameters']['Number2'])
  sum = number1 + number2
  product = number1 * number2
  difference = abs(number1 - number2)
  quotient = number1 / number2

  return {
      'statusCode': 200,
      'body': json.dumps({ "Number1": number1,
                            "Number2": number2,
                            "Sum": sum,
                            "Product": product,
                            "Difference": difference,
                            "Quotient": quotient})
  }




코드 항목을 클릭 후, lambda_function 탭을 클릭한 후 코드를 복사해주면 됩니다.

Deploy 버튼을 클릭하여 코드를 저장합니다. 

 




구성 항목을 클릭한 후, lambda-example-API 링크를 클릭하여 API Gateway 콘솔로 이동합니다.

 




실행 경로를 표시하기 위해 "ANY" 링크가 기본적으로 선택됩니다. "ANY" 지정은 API가 모든 HTTP 동사(GET, PUT, POST 등)를 허용함을 의미합니다. 이제 "메소드 요청" 링크를 클릭합니다. 

 




이벤트 객체에 쿼리 매개변수를 추가해야 합니다.  요청 검사기 옆에 보이는 연필 아이콘을 클릭합니다. 

 



본문, 퀴리 문자열 파라미터 및 헤더 검사 로 설정하고 업데이트 아이콘을 클릭합니다.

 



URL 쿼리 문자열 파라미터 옆에 있는 삼각형 아이콘을 클릭합니다.

 



쿼리 문자열 추가를 클릭합니다.

 




이름 란 Number1을 적고 업데이트 아이콘을 클릭합니다.

Number2도 같은 방식으로 추가합니다.

 




Number1과 Number2 모두 필수 체크 박스를 체크합니다. 

 




메소드 실행을 클릭합니다.

 




메소드 요청 박스쿼리 문자열 항목이 추가된 것을 볼 수 있습니다. 

 




테스트를  클릭합니다.  

 




메소드GET으로 변경하고 쿼리 문자열Number1=1&Number2=2 를 입력합니다.

테스트 버튼을 클릭합니다. 

 




다음과 같은 실행 결과가 보여집니다. 로그 항목에서 좀 더 많은 정보를 볼 수 있습니다.

 





참고

 

https://stackify.com/aws-lambda-serverless/ 

 

https://blog.runscope.com/posts/how-to-write-your-first-aws-lambda-function



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts