서버리스 - API Gateway

이기태·2024년 5월 25일
0

AWS

목록 보기
38/62


API Gateway를 사용함으로 HTTP 엔드포인트, 인증, 사용량 계획, 개발 단계등의 기능 제공

AWS API Gateway

API Gateway는 Lambda와 통합하면 완전한 서버리스 애플리케이션이 구축되어 인프라 관리가 필요 없다.

  • 지원 API
    HTTP API, WebSocket API, REST API(public,private)
  • Web Socket 프로토콜 지원
    두 가지 타입의 실시간 스트리밍 가능
  • API 버전 관리 처리(v1,2,3)
    버전이 바뀌어도 클라이언트 연결이 끊기지 않음.
  • 다양한 환경을 관리(dev,test,prod,...)
  • 보안 관리(인증 ,권한 부여,...)
  • API 키 생성할 수 있고, 요청 스로틀링 관리
    API Gateway에 클라이언트 요청이 과도할떄 요청을 스로틀링
  • Swagger/Open API 3.0 를 임포트해 빠르게 API를 정의
    Swagger/Open API 3.0로 내보내기도 가능
  • 요청과 응답 변환 및 유효성 검사로 검증 기능
  • SDK나 API 사양을 생성
  • API 응답을 캐시

API Gateway와 통합 가능한 서비스

  • Lambda 함수
    • Lambda 함수 호출
    • Lambda 함수가 지원하는 REST API를 완전 서버리스 애플리케이션에 노출시키는 가장 일반적인 방법.
  • HTTP
    • 백엔드의 HTTP 엔드포인트를 노출
    • EX
      온프레미스에 HTTP API가 있거나
      클라우드 환경에 애플리케이션 로드 밸런서가 있을 때
    • API Gateway 기능
      속도 제한 기능
      캐싱
      사용자 인증
      API 키
      ...
    • HTTP 엔드포인트에서 API Gateway 계층을 활용하는 것.
  • AWS 서비스
    어떤 AWS API라도 노출시킬 수 있다.
    예시)
    • 단계 함수 워크플로우를 시작
    • API Gateway에서 직접 SQS에 메시지를 게시
    • 인증을 추가하거나 API를 퍼블릭으로 배포
    • 특정 AWS 서비스에 속도 제한을 추가하기 위해 통합

AWS 서비스에 API Gateway를 사용하는 예시 - Kinesis Data Streams

Kinesis Data Streams에 사용자가 데이터를 전송할 수 있지만 보안 설정은 불가
그래서 Client와 Kinesis Data Stream 사이에 API Gateway를 둔다.
예시)

-> API Gateway의 장점: AWS 서비스를 외부에 노출시킬 수 있다.

API Gateway 배포 방법(엔드포인트 유형)

  • 1) 엣지 최적화(default): 글로벌 사용자 용
    - 누구나 API Gateway에 액세스 가능
    - 엣지로 배포
    - 모든 요청이 CloudFront 엣지 로케이션을 통해 라우팅되 지연 시간이 개선된다.
    - API Gateway는 생성된 리전에 위치하지만 모든 CloudFront 엣지 로케이션에서 액세스될 수 있다.
  • 2) 리전 배포: CloudFront 엣지 로케이션을 원하지 않을때
    - 사용자는 API Gateway를 생성한 리전과 같은 리전에 있어야 사용 가능.
    - 자체 CloudFront 배포를 생성할 수 있다.
    -> 엣지 최적화 배포와 동일한 결과를 가져옴
    -> 캐싱 전략과 CloudFront 설정에 더 많은 권한을 가질 수 있음.
  • 프라이빗
    - VPC 내에서만 액세스 가능.
    - ENI 같은 인터페이스 VPC 엔드포인트를 사용해 접근
    - API Gateway에 액세스를 정의할 떄는 리소스 정책을 사용

API Gateway 보안

사용자 식별 방법

  • 1) IAM 역할
    API Gateway의 API에 액세스할 때 IAM 역할을 사용하도록 한다.
    EC2 인스턴스에서 실행되는 내부 애플리케이션에 유용
  • 2) Cognito
    모바일이나 웹 애플리케이션의 외부 사용자에 대한 보안조치.
  • 3) 사용자 지정 권한 부여자
    자체 로직 실행(ex: lambda function)

HTTPS 보안

  • 사용자 지정 도메인 이름을 AWS Certificate Manager(ACM)과 통합 가능.
  • 엣지 최적화 엔드포인트를 사용할 경우 인증서는 본인 리전에 있어야 한다.
  • 리전 엔드포인트를 사용할 경우 인증서는 API Gateway 단계와 동일한 리전에 있어야 한다.
  • Route 53에 CNAME이나 A-alias를 설정해 도메인 및 API Gateway를 가리키도록 해야 한다.

0개의 댓글

관련 채용 정보