티스토리 뷰

이전에 SpringBoot와 Node 프로젝트를 도커 이미지로 생성하여 ECR 리포지토리에 올리고 이를 ECS로 서비스하는 구성을 만들었습니다.

 

이번에는 프론트엔드에서 이 ECS 서비스로 요청을 전달하기 위한 API Gateway를 생성하고 이 API Gateway를 ECS 서비스를 하는 NLB와 연결하는 방법을 알아보겠습니다.

 

1. VPC 링크 생성

API Gateway에서 private subnet에 있는 NLB에 접속하기 위해서는 VPC 링크를 사용해야 합니다. 따라서 먼저 private subnet의 NLB와 연결할 VPC Links를 생성합니다.

 

 

2. API Gateway 생성

이제 REST API 유형의 API Gateway를 생성합니다.

 

 

3. API Gateway 리소스 및 메소드 생성 후 배포

생성한 API Gateway에 리소스를 추가하겠습니다.

 

먼저 SpringBoot 프로젝트로 보내는 요청은 https://도메인명/api/app/XXX 형태로 들어옵니다. 따라서 먼저 /api 리소스를 생성하고 그 하위에 /app 리소스를 생성한 뒤, 마지막으로 그 하위에 프록시 리소스를 생성해주겠습니다.

 

api 리소스 생성
api 리소스 하위에 app 리소스 생성
app 리소스 하위에 proxy 리소스 생성

 

프록시 리소스를 생성하면 그 하위에 ANY 메소드가 생성되는데 아래와 같이 통합 요청을 VPC 링크로 선택하고 엔드포인트 URL은 NLB의_DNS_이름:7777/api/app/{proxy} 로 설정해줍니다.

 

 

/api/app/XXX로 요청이 들어오는 경우 API Gateway는 VPC 링크를 통해 이전에 생성한 NLB로 요청을 보내고 NLB는 7777 포트로 들어오는 요청을 SpringBoot 프로젝트가 실행되고 있는 ECS Fargate로 보내게 됩니다. SpringBoot 프로젝트의 컨트롤러에서는 /api/app/XXX로 들어오는 요청을 매핑하여 처리하게 됩니다.

 

{proxy}에는 프록시 리소스 부분(method.request.path.proxy)이 그대로 들어오게 됩니다.

 

다음으로 Node 프로젝트로 보내는 요청은 https://도메인명/api/auth/XXX 형태로 들어옵니다. 따라서 위와 같이 /api 리소스 하위에 /auth 리소스를 생성하고 그 하위에 프록시 리소스를 생성해줍니다.

 

api 리소스 하위에 auth 리소스 생성
auth 리소스 하위에 proxy 리소스 생성

 

프록시 리소스 하위 ANY 메소드의 통합 요청을 VPC 링크로 선택하고 엔드포인트 URL은 NLB의_DNS_이름:7070/api/auth/{proxy} 로 설정해줍니다.

 

 

이렇게 하면 /api/auth/XXX로 요청이 들어왔을 때 API Gateway가 VPC 링크를 통해 이전에 생성한 NLB로 요청을 전달하고 NLB는 7070 포트로 들어오는 요청을 Node 프로젝트가 실행되고 있는 ECS Fargate로 보내게 됩니다.

 

이후 이렇게 생성한 API를 배포합니다. "작업 > API 배포"를 클릭한 뒤 기존 배포 스테이지 또는 새로운 배포 스테이지를 생성하여 배포를 진행합니다.

 

 

배포를 진행하면 스테이지에 API Gateway 접속 URL이 나타납니다. 클라이언트는 이 URL로 요청을 보내면 됩니다.

 

지금까지 구성한 내용을 살펴보면 다음과 같습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함