API Gateway

Jihun Kim·2022년 2월 28일
0

aws solutions architect

목록 보기
12/57
post-thumbnail

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이 생성된다.

profile
쿄쿄

0개의 댓글