API Gateway란?
API Gateway는 서버리스로 사용할 수 있으며 클라이언트에게 공유되고 접근 가능한 REST API를 생성할 수 있도록 만들어 준다.
- API Gateway는 람다 함수에 요청을 대리하는 역할을 할 수 있다.
특성
- 완전 관리형으로 관리해야 할 인프라가 없다.
- 웹 소켓 프로토콜을 지원하기 때문에 실시간 스트리밍이 가능하다.
- API Gateway는 버전 관리를 해서 버전1 -> 버전2 ... 이동이 가능하다.
- 여러 환경을 관리할 수 있다(dev, test, prod)
- 보안 설정이 가능하다(인증, 허가를 위해서)
- 만약 클라이언트가 너무 많은 요청을 하는 경우 API key를 생성하고 요청을 조절할 수 있다.
- Swagger나 Open API와 같은 빠르게 정의된 API를 가져와 사용할 수 있다.
- 또한, swagger나 open API로 내보내는 것도 가능하다.
- 호출이 정확한지 확인하기 위해서 API Gateway 단계에서 요청과 응답을 변환하고 검증할 수 있다.
- SDK와 API Specifications(사양)을 생성할 수 있다.
- API 응답을 캐싱할 수 있다.
API Gateway와의 통합
- 람다 함수
- 람다 함수를 호출할 수 있다.
- 람다 함수를 이용해 REST API를 expose 할 수 있다.
- HTTP
- HTTP 엔드 포인트를 expose할 수 있다.
- 온 프레미스 HTTP API, ALB 등에 사용할 수 있다.
- 이를 통해 캐싱, 유저 인증 및 API keys 등을 활용할 API Gateway를 만들 수 있다
- AWS Service
- 어떤 aws 서비스든 API Gateway를 이용해 expose할 수 있다.
- 예를 들면 Step Function workflow를 시작하거나 SQS 메시지를 보낼 수 있따.
- 이를 통해 유저 인증을 추가하고 퍼블릭하게 배포하고 속도 제어를 할 수 있다.
API Gateway를 배포하기 위한 3가지 방법
Edge-Optimized(default)
- 전세계 클라이언트를 위해 사용한다.
- 요청은 CDN을 통해 라우팅 되며 지연 시간이 줄어들게 된다.
- API Gateway는 한 지역에만 있지만 CDN을 통해 여러 지역에서 효율적으로 접근이 가능해 진다.
Regional
- CDN을 사용하고 싶지 않을 때, 클라이언트가 한 지역에만 있을 때 사용할 수 있다.
- 만약 원한다면 CloudFront distribution을 할 수 있고 이는 Edge-Optimized distribution과 같은 결과를 주지만 이 경우에는 캐싱 전략과 CloudFront 세팅에 더 많은 통제권을 가질 수 있다.
Private
- VPC 내부로부터 접속할 수 있고 ENI를 위해서 interface VPC를 사용하게 된다.
- API Gateway에 대한 접근을 제어하기 위해 resource policy를 정의할 수 있다.
API Gateway 실습
- Lambda Function은 미리 정의한 함수이다.
- API Gateway의 deafult timeout은 29초이다.
- 커스텀 할 수도 있지만 최대는 29초이다(람다는 15분).
위의 단계에서 Save를 클릭하면 다음의 화면이 나온다.
- API Gateway를 생성하면 API Gateway가 람다 함수를 호출할 권한을 갖게 된다
- 생성 후 람다 함수쪽으로 가보면 아래와 같이 policy가 정의되어 있을 것이다.
- 즉, API Gateway는 허가를 받은 것이다.
그러면 아래와 같이 API Gateway가 생성된다.
그리고 이를 HTTP 엔트포인트를 통해 접근하고 싶다면 Actions > deploy를 클릭하면 된다.
그럼 이제 아래와 같이 invoke URL이 생성된다.