본문 바로가기

Cloud/AWS

[AWS] Lambda + API GateWay를 이용해 간단한 RESTful API 만들기 #2

반응형
지난 시간에 이어서 Lambda + API Gateway를 이용해 간단한 RESTful API 만들기 2편을 진행하겠습니다.
이전 포스팅에서 Lambda를 이용하여 함수를 작성해보는 것 까지 진행했었는데요.
그렇다면 이번 포스팅에서는 API Gateway를 통해 요청 된 리소스들을 작성한 Lambda Function이 실행되도록 연결해보도록 하겠습니다.
먼저 API Gateway 서비스로 이동합니다.

image
시작을 누르고 나오는 화면에서 우리는 새로운 API를 만드려고하니까 새 API를 체크하시고 이름과 설명을 작성합니다.
image
작성 후 API 생성 버튼을 누르면 새로운 API Gateway가 생성됩니다.
image
여기까지 왔다면, 이제 실제 API를 정의하고 만들어봐야겠죠? 상단의 작업 버튼을 누르면 여러가지 작업들의 목록이 보여집니다.
image
여기서 먼저 리소스를 생성하겠습니다.
리소스는 말 그대로 이 API가 어떤 내용을 가지고 있는 것인지를 나타내는데요. 예를 들어 회원에 대한 API를 만드실거면 리소스이름을 member로 설정하시면 이 API의 경로는 /(루트) 하위의 member 라는 리소스를 가지게되는 것입니다. 여기선 실제로 member라는 리소스를 사용하겠습니다.
image
리소스를 생성하면 아래와 같이 /member라는 리소스가 생성됩니다.
image
그럼 이제 이 member라는 리소스에 메서드를 추가시킬 건데요.
여기서 메서드는 HTTP 메소드를 의미합니다. 기본적으로는 GET, POST, PUT, DELETE 등이 있습니다.
간단하게 알아보자면.
GET – URL이 가진 정보를 검색하기 위해 서버 측에 요청하는 메소드
POST – URL에 폼 입력을 처리하기 위해 구성한 메소드
PUT – POST와 유사한 방식이며 일반적으로 웹서버에 변경을 요청하는 메소드
DELETE – 말 그대로 URL에 삭제를 요청하는 메소드
로 정리할 수 있다. 우리는 먼저 POST 메소드 부터 추가해보겠습니다.
위와 같이 작업목록에서 이번엔 메서드 생성 버튼을 누르고  POST를 선택하고 확인을 체크하면 아래와 같은 화면이 보여집니다.
image
여기선 POST메서드를 요청받으면 실행되는 환경을 설정해주는 부분인데요.
저희는 지난 포스팅에서 다루었던 Lambda Function을 연결해보기로 했으므로 Lambda함수를 체크하고 지난번 LambdaFunction을 만들었던 리전을 선택하면 해당 리전에서 만든 Lambda함수를 검색할 수 있습니다.
( POST 기능을 보여주기 위해서 지난 포스팅에서 작성한 코드가 아닌 다른 Lambda function을 작성해보았습니다.)
image
입력 후에 저장을 누르면 API Gateway에서 Lambda함수를 호출할 수 있도록 권한을 요청합니다. 확인 버튼을 클릭합니다.
image
image
확인까지 누르면, 이제 member라는 리소스에 POST메소드로 요청을 하면 myTest-POST라는 Lambda Function이 실행되도록 API를 생성한 것입니다. 생성이 완료되면 이 API가 실행되는 과정을 이해하기 쉽게 표현해주었네요. 그렇다면, 이 API가 정상적으로 잘 작동되는지 테스트를 해봐야겠죠.
상단 중간의 테스트 버튼을 클릭합니다.
image
메서드를 테스트할 수 있는 환경을 설정하는 화면이 나오게되고, 아래에 요청 본문 editor가 보입니다. 이것은 POST 메소드가 입력에 대한 요청을 하는 메소드이기 때문에 전달하는 데이터를 입력하는 editor가 생성된 것입니다.
제가 생성한 Lambda 함수에는 name(이름)과 gender(성별)을 입력하면 함수가 실행되서 결과 값으로
Name is (입력받은 name값), Gender is (입력받은 gender값)을 메시지로 반환하는 코드인데요. 본문에 name과 gender를 작성하고 테스트를 실행해보겠습니다.
image
테스트 한 결과입니다. 요청에 대한 본문 응답으로 "Name is Hong Gil Dong , Gender is male" 를 반환했네요.
그리고 요청에 대한 로그 또한 상세하게 확인하실 수 있습니다.

여기까지 리소스를 생성하고, 그 리소스에 해당하는 메소드를 설정한 뒤 해당 메소드에 Lambda Function을 연결하여 API를 실행해보았습니다. 이 포스팅에선 POST만 다루었지만 Lambda Function을 어떻게 작성하느냐에 따라 API Gateway에서 연결되는 메소드 또한 달라질 수 있으니 다양한 시도를 통해 나만의 Restful API를 만들어 볼 수 있을 것입니다.