API 개발
AWS에서 애플리케이션 개발하기
Ricardo Sueiras
Principal Technologist
API Gateway 통합
- 다양한 백엔드 통합 옵션
- HTTP: 공개적으로 라우팅 가능한 모든 엔드포인트
- DynamoDB, SNS 같은 AWS 서비스 API
- Lambda 함수
- VPC 링크를 통한 프라이빗 리소스
- 실제 백엔드 없이 모의 응답 생성
통합 유형: 프록시
- 통합 유형에 따라 API Gateway의 제어 범위가 결정됩니다
- 프록시 유형:
AWS_PROXY, HTTP_PROXY
- HTTP 요청 전체가 백엔드로 그대로 전달됩니다
- API Gateway는 투명한 패스스루 역할을 합니다
- 백엔드가 응답을 생성합니다
통합 유형: 비프록시
- 비프록시 유형:
AWS, HTTP
- 요청과 응답 변환을 직접 구성합니다
- 매핑 템플릿으로 동작합니다
- 템플릿은 Velocity Template Language(VTL)로 작성됩니다
요청 검증
- 요청이 백엔드에 도달하기 전에 검증합니다
- 필수 필드 누락을 감지합니다
- 잘못된 JSON 형식을 감지합니다
- 잘못된 매개변수 유형을 감지합니다
- 검증 실패 시 대부분
400 Bad Request를 반환합니다
요청 검증
- 검증 대상:
- 헤더
- 쿼리 문자열 매개변수
- 요청 본문
- JSON 스키마
요청 검증
- 검증의 효과:
- 잘못된 백엔드 요청 감소
- Lambda 실행 비용 절감
- API 안정성 향상
변환
- 백엔드 코드를 수정하지 않고 요청과 응답 형식을 변경합니다
- 페이로드 구조 변경
- 필드명 변경
- 헤더 변환
- 데이터 형식 변환
- 구현 세부 정보 숨기기
- VTL 매핑 템플릿으로 동작합니다
오류 처리
- 두 가지 오류 범주
- 게이트웨이 오류: API Gateway에서 발생
- 통합 오류: 백엔드 실패
- 일반적인 게이트웨이 오류:
400 Bad Request: 요청 검증 실패
429 Too Many Requests: 제한(Throttling) 한도 초과
오류 처리
- 일반적인 통합 오류:
502 Bad Gateway: 응답 형식 오류 또는 잘못된 응답
503 Service Unavailable: 백엔드 사용 불가 또는 과부하
504 Gateway Timeout: 29초 제한 시간 초과
- 리전 및 프라이빗 REST API는 29초를 초과할 수 있습니다
로깅
- 실행 로그와 CloudWatch 지표는 핵심 문제 해결 도구입니다
- API Gateway는 CloudWatch와 연동하여 다음을 제공합니다:
로깅
- CloudWatch 로그로 다음 문제를 해결할 수 있습니다:
- 통합 실패
- 변환 오류
- 인증 실패
- Lambda 실행 문제
스테이지: 환경별 API 관리
- 하나의 API 정의로 여러 환경을 운영할 수 있습니다
- API Gateway는 스테이지로 이런 환경을 관리합니다
스테이지: 환경별 API 관리
- 하나의 API 정의로 여러 환경을 운영할 수 있습니다
- API Gateway는 스테이지로 이런 환경을 관리합니다
- 스테이지는 이름이 지정된 참조입니다
- API 설정의 배포 스냅샷을 가리킵니다
스테이지: 환경별 API 관리
- 하나의 API 정의로 여러 환경을 운영할 수 있습니다
- API Gateway는 스테이지로 이런 환경을 관리합니다
- 스테이지는 이름이 지정된 참조입니다
- API 설정의 배포 스냅샷을 가리킵니다
- 일반적인 스테이지 이름:
스테이지: 환경별 API 관리
- 하나의 API 정의로 여러 환경을 운영할 수 있습니다
- API Gateway는 스테이지로 이런 환경을 관리합니다
- 스테이지는 이름이 지정된 참조입니다
- API 설정의 배포 스냅샷을 가리킵니다
- 일반적인 스테이지 이름: Dev, Test, QA, Prod
- 호출 URL은 스테이지마다 다르게 표시됩니다
스테이지: 환경별 API 관리
- 하나의 API 정의로 여러 환경을 운영할 수 있습니다
- API Gateway는 스테이지로 이런 환경을 관리합니다
- 스테이지는 이름이 지정된 참조입니다
- API 설정의 배포 스냅샷을 가리킵니다
- 일반적인 스테이지 이름: Dev, Test, QA, Prod
- 호출 URL은 스테이지마다 다르게 표시됩니다
- 여러 스테이지가 하나의 배포를 가리켜 즉시 롤백할 수 있습니다
스테이지 기능
- 각 스테이지는 독립적으로 구성됩니다
- 구성에는 스테이지 변수가 포함됩니다
- 스테이지 변수는 키-값 쌍입니다
- 하나의 배포를 여러 백엔드로 라우팅할 수 있습니다
- 환경 변경 시 재배포가 필요하지 않습니다
스테이지 기능
- 카나리 배포
- REST API에서만 지원
- 트래픽 일부를 새 배포로 전송
- 전체 릴리스로 승격
- 카나리 삭제 시 롤백
스테이지 기능
- 제한(Throttling)
- 스테이지 수준에서 설정
- 모든 메서드에 적용되며 메서드별로 재정의 가능
스테이지 기능
- 제한(Throttling)
- 스테이지 수준에서 설정
- 모든 메서드에 적용되며 메서드별로 재정의 가능
- 캐싱
- REST API에서만 지원
- 스테이지에서 백엔드 응답을 저장
- 클라이언트는
Cache-Control로 우회 가능
- TTL은 0~3600초, 기본값은 300초
스테이지 기능
- 로깅은 두 가지 모드를 제공합니다
- 액세스 로그
$context 변수로 생성되어 CloudWatch 로그 그룹으로 전송
- 실행 로그
- 요청과 응답의 전체 세부 정보 캡처
연습해 봅시다!
AWS에서 애플리케이션 개발하기
Preparing Video For Download...