Deploy - AWS API Gateway 사용하기
전체적인 웹 통신 흐름에 따른 배포에 대한 글은 해당 블로그 참고
이번엔 AWS API Gateway에 대해서 좀 더 자세하게 정리하고 실제로 사용해 보려 한다.
생활코딩의 영상을 참고하여 정리했다.
API Gateway 란?
말 그대로 client에서 server로 통신할 때 사용하는 많은 api들의 대문과 같은 역할을 하는 것이다.
우리가 개발단계에서야 api 주소는 localhost / 127.0.0.1 이렇게 동일하게 진행하지만, 실제 서버는 여러 컴퓨터에서 운용되고, 서버 주소들도 제각각일 것이다.
따라서 이를 상황에 맞춰서 일일이 주소를 바꿔준다면???
매우 귀찮아질 것이다. 위의 client side 배포에서 진행한 build 과정을 다시 다 겪어야 한다. (client 코드의 api 주소를 다 바꿔주어야 하므로) 따라서 이런 일을 방지 하기 위해 있는 것이 API Gateway 이다.
위의 그림을 보면 이해가 쉬울 것이다.
따라서 하나의 서버 주소가 없어지거나 변경될 경우 우리는 client 코드를 일일이 바꾸는 것이 아니라, api gateway로 가서 각 작은 문들의 라벨링만 바꿔주면 되는 것이다.
이 뿐 아니라, 실제로 서버로 통하는 문을 API Gateway 하나로 두면서 가능한 추가적인 기능들도 있다.
로깅, 액세스 제어, 모니터링, 인증 등의 작업들을 통합적으로 할 수 있게 된다.
API Gateway는 크게 세 개의 서비스를 제공한다.
HTTP API(단순하고 저렴하다) / REST API(복잡하고 비싸다)/ WEB SOCKET API 인데, web socket API는 다루지 않을 것이다.
생활코딩의 강의가 HTTP API를 바탕으로 API Gateway를 설명하고 있으므로, 이번 정리도 이를 기준으로 진행될 예정이다.
1. AWS에서 API Gateway를 검색해서 들어가면 아래와 같은 화면이 뜰 것이다. HTTP API 구축으로 진행해보자.
2. 위의 화면에서 구축 버튼을 클릭하면 아래와 같은 화면이 뜬다.
API 이름을 지정하고 review and create 버튼을 클릭 -> 그다음 화면에서 생성 버튼 클릭
3. 아래와 같은 화면이 뜰 것이다.
stage 이름 쪽의 주소가 바로 api 대문 역할을 할 대표 url 주소이다!
4. 서버 api 를 api gateway에 설정해주기
왼쪽 사이드 바의 경로 버튼을 클릭하면 아래와 같은 화면이 뜨고 create를 클릭해준다.
5. 아래와 같은 창에서, 서버로 요청이 들어오는 method와 경로를 설정해 줄수 있다.
가령 GET 그리고 /users 로 하면, api url/users로 GET 요청이 들어온 경우 어떠한 서버 주소로 연결해 주겠다는 의미이다.
이때 method는 any로도 설정가능하다.
6. 아래와 같은 화면에서 경로와 서버 주소를 연결해줄 수 있다.
"통합연결" 버튼을 클릭하자.
7. 아래와 같은 화면에서 URL 부분에 바로 연결하고자 하는 서버 주소를 입력한다.
-> 이때 입력하는 URL에 EC2에서 만든 instance의 public 주소를 입력하면 된다.
-> 만약 로드밸런서를 사용해서 ELB를 생성했다면 ELB DNS 주소를 입력해야 한다.
추가적으로 API Gateway를 통해, 서버리스 백엔드인 lamda 도 사용할 수 있다.
권한부여에서는 각 서버 API에 특정 인증 기능을 추가하고 싶을때 사용할 수 있다.
또한 CORS 메뉴에서 CORS 정책도 허용할 수 있다.
API Gateway는 기본적으로 자동 배포가 된다. 만약에 자동배포를 원하지 않는 경우 배포/스테이지 부분을 추가적으로 공부해서 설정해두면 된다.