[AWS] API Gateway

mDev_97·2023년 10월 16일

AWS

목록 보기
4/5
post-thumbnail

이번 게시글에서는 AWS의 API Gateway에 대해서 알아보겠습니다.

API Gateway에 대해서 알아보기 전에 선수 지식으로 알아야 하는 것들이 있습니다.

API와 RESTfulAPI

API란?

많은 분들이 "API를 호출해라", "무슨 API를 사용해라" 등과 같은 표현들을 많이 접해보셨을 것입니다.

API는 클라이언트와 서버 중간에서 복잡한 일을 처리해주는 것으로
Application Programming Interface의 약자입니다.

즉, 클라이언트와 서버 중간에서 요청을 받고 그 요청을 해결해주는 것입니다.

RESTful API란?

RESTful API란 다양한 API 종류들 중 하나이며,
Representational State Transfer의 약자로 사용되어집니다.

즉, 상태에 변화를 주기위해 정보를 클라이언트와 서버 간에 공유하고 주고받기 위해 사용되어지는 것입니다.

RESTful API에서는 대표적으로 크케 4가지의 요청을 사용할 수 있는데요

  • CREATE (post)
  • READ (get)
  • UPDATE (put)
  • DELETE (delete)

그리고 RESTful API는 JSON 형태로 요청과 응답을 주고 받습니다.


API Gateway란?

API Gateway를 사용하는 이유

우리가 사용하는 대부분의 어플리케이션은 RESTful API를 기반으로 운용되고 있습니다.

그렇기 때문에 우리의 어플리케이션에서는 다음과 같은 것들을 수행해야합니다.
* Authentication & Authorization
ㄴ 어플리케이션에 모든 사람들이 API 요청을 하는 것을 허용해서는 안됩니다.

* API 모니터링
ㄴ API 정상적으로 작동하는지 확인하기 위해서 모니터링을 해야합니다.

* API 요청 캐시 시스템이 필요
ㄴ API 요청을 빠르게 처리하기 위해서 캐시 시스템이 필요합니다.

우리는 위와 같은 이유들 때문에 API Gateway를 사용합니다.

API Gateway란?

API Gateway는 API 요청이 몇 번 들어오던 간에 뛰어난 확장성 제공함과 동시에
직접 API를 만들고 운영하며 심지어는 모니터링 기능이 탑재되어 있습니다.

그리고 API Gateway는 EC2 인스턴스에서 작동하는 어플리케이션 및
다양한 웹 어플리케이션에 접근하여 데이터를 가져오는 역할을 담당합니다.


실습

이번에는 Lambda Function과 DynamoDB를 함께 사용하여
AWS에서 사용할 수 있는 API를 직접 만들어보고 사용하는 API Gateway 실습을 진행 해보겠습니다.

API Gateway는 클라이언트로부터 다양한 요청을 받고, 이 정보들은 Lambda 함수로 전달되어
사용자의 요청에 따라 DynamoDB에 데이터를 삽입, 수정, 삭제 등의 여러가지 이벤트를 발생시킬 것입니다.

먼저 해주어야 할 것은 DynamoDB Table을 만들어주는 것입니다.

테이블의 이름은 customers로 하고, 파티션 키는 문자열 형태로 하여 customer_id로 주고
나머지 설정들은 기본으로 설정하겠습니다.

두 번째로 해주어야 할 것은 API를 생성하는 것입니다.
따라서, API Gateway로 들어가줍니다.
그리고 저는 REST API를 만들 것이기 때문에 REST API 구축 버튼을 클릭해줍니다.

그럼 다음과 같은 화면을 보실 수 있습니다.

처음으로는 REST API를 만들 것이기 때문에 프로토콜에서 REST를 선택해줍니다.
다음으로는 API를 만드는 방법에서는 새로운 API를 만들 것이기 때문에 새 API를 선택해줍니다.

그리고 API의 이름을 작성하여 API를 생성해줍니다.

API가 정상적으로 생성된 것을 확인할 수 있습니다.
그럼 이제 이 API를 통해서 DynamoDB에 데이터를 넣어보겠습니다.

좌측의 Resource 옆에 작업 버튼에서 리소스 생성 버튼을 눌러 새로운 리소스를 만들 수 있습니다.
리소스의 이름은 customer로 하고 리소스 경로는 기본값을 유지하여 새로운 리소스를 만들어주겠습니다.

그럼 이제 POST 메소드를 만들어 DynamoDB에 데이터를 넣어보겠습니다.
작업 -> 메소드 생성을 눌러줍니다.

아래의 통합 유형에서 Lambda 함수 선택지가 있습니다.
저는 Lambda 함수를 호출하여서 DynamoDB에 데이터를 넣어줄 것이기 때문에
먼저 Lambda 함수를 만들어 주겠습니다.

Lambda 함수 생성에서 DynamoDB의 PutItem에 대한 정책이 연결되어 있는 IAM의 역할에 연결하여 Lambda 함수를 생성하여 줍니다.

그럼 API Gateway에서 요청받은 데이터를 Lambda 함수에 어떤 형태로 전달받는지 확인하기 위해
Lambda 함수의 소스 코드를 다음과 같이 수정하겠습니다.

그럼 이제 다시 API Gateway로 돌아와서 방금 생성한 Lambda 함수의 이름을 작성하여
API Gateway의 API 메소드를 저장해주겠습니다.

그럼 이제 테스트를 해주기 위해서 테스트 버튼을 클릭해줍니다.

쿼리 문자열과 헤더는 이번 실습에서는 중요하지 않기 때문에 비워두겠습니다.
그리고 요청 본문을 다음과 같이 작성해주고 테스트를 진행하면 잘 작동하는 것을 볼 수 있습니다.

그럼 Lambda 함수를 통해서 우리가 보낸 응답을 DynamoDB에 삽입하기 위해서 다시 Lambda 함수로 돌아가겠습니다.

그리고 API Gateway로 받은 요청 본문을 DynamoDB에 삽입하기 위해서 Lambda 함수의 코드 소스를 아래와 같이 수정해줍니다.

그럼 이제 다시 API Gateway로 돌아와서 방금 보냈던 POST 요청을 다시 보내보겠습니다.

테스트를 진행해보면 응답 본문에 우리가 방금 작성했던 내용으로 응답이 온 것을 확인할 수 있습니다.

마지막으로 우리가 보낸 요청에 DynamoDB에 잘 삽입되었는지도 확인해보겠습니다.

DynamoDB의 테이블 -> 항목 탐색을 보시면 아래와 같이 테이블에도 잘 저장된 것을 보실 수 있습니다.

profile
안녕하세요. 백엔드, 클라우드, 인프라에 관심과 열정이 있는 김문성입니다. 😊

0개의 댓글