[AWS] Lambda API Gateway POST 통신 하기

[Lambda Runtime]
Python 3.7

[API Gateway]
REST API
Method : POST
Stage : Prod

Lambda와 API Gateway를 연결

POST의 Request body에 전송되는 데이터를 Lambda 함수의 입력 값으로 받도록 한다.

공식 문서에 선언된 데이터 매핑 표현식을 참고할 수 있다.

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/request-response-data-mappings.html

 

Amazon API Gateway API 요청 및 응답 데이터 매핑 참조 - Amazon API Gateway

Amazon API Gateway API 요청 및 응답 데이터 매핑 참조 이 단원에서는 API 메서드 요청 데이터(context, stage 또는 util 변수에 저장된 다른 데이터 포함)에서 해당 통합 요청 파라미터로의 데이터 매핑과

docs.aws.amazon.com

 

Lambda 함수 생성

먼저 람다 함수를 생성합니다.

함수를 생성하면 각 언어별로 이벤트 처리 핸들러가 기본으로 선언되어 있습니다.

파이썬의 경우 lambda_function.py 파일의 lambda_handler가 핸들러입니다.

함수의 인자로 event, context 객체를 받아서 인자를 처리한 후 return으로 응답을 반환합니다.

예제 코드의 경우 요청 값에 상관없이 'statusCode':200과 "Hello from Lambda!"를 반환합니다.

Request Body의 값이 어떤 방식으로 전달되는지 확인하기 위해 event 객체의 값을 모두 출력하는 코드로 변경한다.

import json

def lambda_handler(event, context):
    test = event
    
    return test

API Gateway 생성

트리거 생성

트리거를 생성하여 API Gateway에서 REST 요청이 발생한 경우 람다 함수를 실행하도록 설정한다. 그림에는 이미 생성되어 있지만 Add trigger 버튼을 통해 새로운 REST API를 생성할 수 있다.

Method Request

Request Body에 전송할 Content Type을 지정합니다. json 데이터를 전송할 예정이므로 application/json 을 선언합니다.

Method Execution

요청으로 받은 body의 값을 어떻게 엔드포인트(lambda)로 전달할지 결정합니다. application/json을 선언합니다.

템플릿으로는 값의 변경없이 그대로 전달하는 Method Request passthrough 옵션을 선택하고 저장(Save)합니다.

API Gateway에서의 설정은 끝났습니다. 선언한 리소스에 대해 배포(Deploy)한 후 Test를 진행합니다.

API TEST

전송한 json 요청이 응답 body의 "body-json"에 포함되어 전송되는 것을 확인할 수 있습니다.

이외에도 AWS에서 선언한 context 변수들도 포함되어 전송되는 것을 확인할 수 있으며, 개발자는 이러한 값을 이용할 수 있습니다.

POSTMAN 이용한 테스트

Stages > [배포설정한 Stage 명] > POST 로 접근하면 엔드포인트 주소를 확인할 수 있으며 외부에서 REST 요청을 확인할 수 있습니다.

 

반응형