서버리스 애플리케이션 구현 - Amazon API Gateway 구성

whdbtjd·2025년 4월 7일

캡스톤

목록 보기
3/3
post-thumbnail

이번에는 지난 포스팅 (클라우드 네이티브 애플리케이션 구현해보기 - AWS Lambda, DynamoDB 구성
)에 이어 클라이언트의 요청 처리를 위한 AWS의 API 서비스인 Amazon API Gateway를 설정하고, API 요청에 대한 구체적인 로직을 처리할 Lambda함수를 새롭게 생성해 보았다.



API Gateway 설정

위 화면은 콘솔에서 API Gateway 생성 시 처음 나타나는 화면이다. 각각 유형이 어떨 때 쓰이는지 정리해보았다.

HTTP API

  • 빠르고 간단하며 비용이 가장 저렴
  • AWS 초보자에게 적합
  • 간단히 프론트와 Lambda와의 연동이 필요할 때

WebSocket API

  • 실시간 양방향 통신이 필요한 경우
  • ex) 채팅 서비스, 실시간 알림 등

REST API

  • HTTP API보다 많은 기능 제공 (인증, 사용량 제한 등)
  • 이미 REST API 기반으로 서비스가 설계 되어 있는 경우 사용
  • HTTP API보다 비용이 약간 더 나감

REST API (프라이빗)

  • VPC 내부에서만 접근 가능한 REST API
  • 외부에 노출되지 않는 API를 만들 고 싶을 때 사용

나는 추후 디벨롭하기 편하도록 HTTP API를 선택하였다.

아래는 선택 후 생성한 API 리소스 들이다. 필수적인 API들만 간단하게 작성했다.

이렇게 생성 후 해야할 것들이 크게 2가지 있었다.



1. Lambda 생성 및 연동

지난 번엔 API에서 뉴스를 파싱한 뒤 DB에 저장하는 Lambda를 생성했다면, 이번엔 API 요청에 따른 작업을 수행하는 Lambda가 필요했다.

그래서 NewsCollectorsAPI 함수를 생성하여 기본적인 구성을 마치고 API 요청에 대한 테스트 까지 완료하였다.

이렇게 작성한 함수를 아까 생성한 API 리소스에 연결해야 한다.

아까 생성한 API 리소스 하나하나 설정을 통해 위와 같이 연결해주었다. 여기서 중요했던 점은 Lambda 프록시 통합 설정 이다.

Lambda 프록시 통합 설정에 따른 차이☑️

프록시 통합 설정

  • API Gateway에서 HTTP 요청 전체를 JSON 형태로 Lambda에 전달
  • 응답도 Lambda에서 JSON으로 전달해주면 API Gateway가 알아서 HTTP응답으로 자동 변환
  • Lambda에선 이벤트가 발생하면 해당 이벤트에 대한 모든 정보(path, query string, header, body 등)에 대한 정보를 한 번에 받을 수 있음

프록시 통합 미설정

  • API Gateway에서 매개변수, 본문, 응답 포맷 등을 직접 설정해야함

나는 학습 및 경험용 프로젝트기 때문에 간단한 구현을 위해 프록시 설정을 해주었고, Lambda함수도 이에 맞추어 작성하였다.



2. 스테이지 생성

생성한 API리소스들을 최종적으로 외부에서 호출할 수 있도록 하려면 배포 과정을 거쳐야 하는데 이 때 사용하는 개념이 "스테이지" 이다.

스테이지 개념
스테이지란 API의 개발 환경을 구분하기 위한 단위를 말한다. 예를 들어, 개발 중인 버전의 스테이지는 dev, 실제 배포할 버전은 prod와 같이 나눌 수 있다.


위와 같이 API리소스를 연결하여 dev 스테이지를 생성하였다.

또한 Amazon CloudWatch에 API Gateway에 대한 정책을 설정하고 역할을 생성하여 애플리케이션에 대한 로그 및 추적도 가능하게 설정하였다.

그리고 스테이지에 설정된 URL을 통해 API를 호출해보면

이렇게 데이터가 잘 호출 되는 것을 볼 수 있다. 다음에는 이를 활용하여 프론트엔드를 구성하여 기본적인 작업을 완료해보자

profile
취업ㄱㄱㄱ

0개의 댓글