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를 통해 원하는 비즈니스 목표를 달성할 수 있을 것 같다.
'MSA' 카테고리의 다른 글
서버리스 사진첩 만들기 (0) | 2022.04.15 |
---|---|
[lambda]서버리스 애플리케이션 성능 최적화 (0) | 2022.04.13 |
[MSA]Circuit Breaker를 활용하여 부분 실패를 막자 (0) | 2022.04.08 |
[MSA]NoSQL DB의 Eventual Consistency (0) | 2022.04.08 |
마이크로 서비스와 서버리스 (0) | 2022.04.06 |