[Lambda Runtime]
Python 3.7
[API Gateway]
REST API
Method : POST
Stage : Prod
Lambda와 API Gateway를 연결
POST의 Request body에 전송되는 데이터를 Lambda 함수의 입력 값으로 받도록 한다.
공식 문서에 선언된 데이터 매핑 표현식을 참고할 수 있다.
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를 생성할 수 있다.
Request Body에 전송할 Content Type을 지정합니다. json 데이터를 전송할 예정이므로 application/json 을 선언합니다.
요청으로 받은 body의 값을 어떻게 엔드포인트(lambda)로 전달할지 결정합니다. application/json을 선언합니다.
템플릿으로는 값의 변경없이 그대로 전달하는 Method Request passthrough 옵션을 선택하고 저장(Save)합니다.
API Gateway에서의 설정은 끝났습니다. 선언한 리소스에 대해 배포(Deploy)한 후 Test를 진행합니다.
전송한 json 요청이 응답 body의 "body-json"에 포함되어 전송되는 것을 확인할 수 있습니다.
이외에도 AWS에서 선언한 context 변수들도 포함되어 전송되는 것을 확인할 수 있으며, 개발자는 이러한 값을 이용할 수 있습니다.
POSTMAN 이용한 테스트
Stages > [배포설정한 Stage 명] > POST 로 접근하면 엔드포인트 주소를 확인할 수 있으며 외부에서 REST 요청을 확인할 수 있습니다.
'Security > Cloud Computing' 카테고리의 다른 글
[AWS] IAM 취약점, 권한 평가 도구 분석 (0) | 2021.10.03 |
---|---|
[AWS] 특정 IAM 사용자에게 EC2에 권한 부여하기 (0) | 2021.08.19 |
[AWS] Python Flask + AWS AuroraDB 연동하기 (0) | 2021.06.05 |
[AWS] Serverless Goat 풀이 - 클라우드 모의해킹 (0) | 2021.06.01 |
[MINIO 설치] 라즈베리파이에 AWS S3 환경 구성하기(Object Storage) (0) | 2021.05.26 |