본문 바로가기

MSA

[MSA]API Gateway를 사용하여 간단한 서비리스 애플리케이션을 만들어보자

API Gateway-Lambda-DynamoDB

3-tier 아키텍처를 만들어볼 것이다.

 

여기서 람다함수로 DynamoDB에 레코드를 추가하는 간단한 코드를 사용한다.

API Gateway의 API Key와 권한 부여자를 사용해 볼 것이다.

 


람다배포

serverlessland의 Lambda to DynamoDB 과정을 참고하여 sam을 통해 빌드, 배포까지 진행한다.

 

배포까지 진행하였으면

aws lambda invoke --function-name {Lambda함수의Arn를입력} --invocation-type Event \
--payload '{ "Metadata": "Hello" }' \ response.json --cli-binary-format raw-in-base64-out

{"Metadata": "Hello"} 데이터를 삽입하여 202 응답이 오는지 확인한다.

 

만약 정상적으로 응답이 온다면 DynamoDB에 payload를 삽입하는 로직을 가진 람다는 성공적으로 빌드된 후 배포된 것이다.

 

API Gateway를 람다 트리거에 추가

람다함수는 다양한 트리거로 실행되게 구현할 수 있는데, 그 중 API 게이트웨이도 있다.

 

트리거로 추가했다면, 엔드포인트로 요청을 보내면 람다함수가 실행될 것이다.

 

이 API Gateway에서 요청 메서드별로 다른 것이 실행되게 구현할 수도 있다.

 

DB에 정보를 넣는 것은 REST API를 구현하기 위한 CRUD 중 Update로 판단하여 Post 메서드에 할당해 주었고, Get 요청에 대한 것은 보이는 것처럼 HTTP 엔드포인트로 리다이렉션해줄 수도 있고, 다른 람다함수를 추가할 수 있으며, s3와 같은 다른 AWS 서비스에 접근하도록 설정할 수 있다. 참 편리하다.

 

인증 추가하기

AWS를 사용하는, 사용하려는 사람에게는 공식문서를 떼어놓을 수 없다. API Gateway의 인증 기능인 API key와 권한 부여자 설정에 대해서는 공식문서를 보면서 충분히 따라할 수 있다.


람다함수는 대표적인 AWS의 서버리스 서비스로 만건의 요청당 얼마의 비용이 청구되는 등, 소규모 서비스를 시작하는데에 좋은 대안이 될 것이다. 그리고 서버리스라고해서 원하는 로직을 실행시킬 수 없는 것도 아니고 API Gateway를 통해 원하는 비즈니스 목표를 달성할 수 있을 것 같다.