
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를 가리키도록 해야 한다.