API Gateway의 처리량 향상을 위해 REST API에 대한 요청을 제한할 수 있습니다. - Amazon API Gateway

API Gateway의 처리량 향상을 위해 REST API에 대한 요청을 제한할 수 있습니다.

API에 대한 제한 및 할당량을 구성하여 너무 많은 요청으로 인해 과부하되지 않도록 보호할 수 있습니다. 제한과 할당량은 모두 최선의 방식으로 적용되며 보장된 요청 한도가 아닌 대상으로 간주해야 합니다.

API Gateway는 요청에 대해 토큰이 계산되는 토큰 버킷 알고리즘을 사용하여 API에 대한 요청을 제한합니다. 특히 API Gateway는 리전별로 계정의 모든 API에 대한 요청 제출 속도와 버스트를 검사합니다. 토큰 버킷 알고리즘에서 버스트는 이러한 제한의 사전 정의된 초과 실행을 허용할 수 있지만, 다른 요인으로도 제한을 초과할 수 있습니다.

요청 제출이 정상 상태의 요청 속도 및 버스트 제한을 초과할 경우 API Gateway에서 요청을 제한하기 시작합니다. 이 시점에서 클라이언트는 429 Too Many Requests 오류 응답을 받을 수 있습니다. 이러한 예외를 포착하면 클라이언트는 속도 제한 방식으로 실패한 요청을 다시 제출할 수 있습니다.

API 개발자는 개별 API 단계 또는 메서드에 대한 대상 제한을 설정하여 계정의 모든 API에서 전반적인 성능을 향상시킬 수 있습니다. 또는 지정된 요청 비율 및 할당량을 기반으로 클라이언트 요청 제출에 대한 제한을 설정하도록 사용량 계획을 활성화할 수 있습니다.

API Gateway에 조절 한도 설정을 적용하는 방법

API에 대한 제한 및 할당량 설정을 구성하기 전에 API에 대한 제한 관련 설정의 유형과 API Gateway에서 이러한 설정이 어떻게 적용되는지 이해하면 유용합니다.

Amazon API Gateway는 네 가지 기본 유형의 제한 관련 설정을 제공합니다.

  • AWS 제한 한도는 리전의 모든 계정과 클라이언트에 적용됩니다. 이 한도 설정은 API 및 사용자의 계정이 너무 많은 요청 때문에 가득 차지 않도록 방지하기 위해 존재합니다. 이러한 제한은 AWS에서 설정하며 고객이 변경할 수 없습니다.

  • 계정당 한도는 지정된 리전에 있는 계정의 모든 API에 적용됩니다. 계정 수준 속도 제한은 요청 시 늘릴 수 있습니다. 제한 시간이 더 짧고 페이로드가 더 작은 API를 사용하면 더 높은 제한이 가능합니다. 리전별로 계정 수준 조절 한도 증가를 요청하려면 AWS 지원 센터에 문의하시기 바랍니다. 자세한 내용은 Amazon API Gateway 할당량 및 중요 정보 단원을 참조하십시오. 이러한 제한은 AWS 제한 한도보다 높을 수 없습니다.

  • API별, 단계별 제한 한도는 단계의 API 메서드 수준에서 적용됩니다. 모든 메서드에 대해 동일한 설정을 구성하거나 각 메서드에 대해 다른 제한 설정을 구성할 수 있습니다. 이러한 제한은 AWS 제한 한도보다 높을 수 없습니다.

  • 클라이언트별 제한 한도는 사용량 계획과 연결된 API 키를 클라이언트 식별자로 사용하는 클라이언트에게 적용됩니다. 이러한 한도는 계정당 한도보다 높을 수 없습니다.

API Gateway에서 제한 관련 설정은 다음 순서로 적용됩니다.

리전별 계정 수준 조절

기본적으로 API Gateway는 리전별로 AWS 계정 내의 모든 API에서 안정적인 상태의 초당 요청(RPS)을 제한합니다. 또한 리전별로 AWS 계정 내 모든 API에 대해 버스트(즉, 최대 버킷 크기)를 제한합니다. API Gateway에서 버스트 제한은 API Gateway가 429 Too Many Requests 오류 응답을 반환하기 전에 수행할 동시 요청 제출의 최대 목표 수를 나타냅니다. 조절 할당량에 대한 자세한 내용은 Amazon API Gateway 할당량 및 중요 정보 단원을 참조하세요.

사용 계획에서 API 수준 및 단계 수준의 제한 대상 구성

사용 계획에서 API 또는 스테이지 수준의 모든 메서드에 대한 메서드별 제한 대상을 설정할 수 있습니다. 토큰이 토큰 버킷에 추가되는 속도(초당 요청 수)인 제한율을 지정할 수 있습니다. 토큰 버킷의 용량인 제한 버스트를 지정할 수도 있습니다.

AWS CLI, SDK 및 AWS Management Console을 사용하여 사용량 계획을 생성할 수 있습니다. 사용량 계획에 대한 자세한 내용은 API Gateway의 REST API 사용량 계획 및 API 키 섹션을 참조합니다.

스테이지 수준 제한 대상 구성

AWS CLI, SDK 및 AWS Management Console을 사용하여 스테이지 수준 제한 대상을 생성할 수 있습니다.

AWS Management Console을 사용하여 스테이지 수준 제한 대상을 생성하는 방법에 대한 자세한 내용은 스테이지 설정 수정을 참조합니다. AWS CLI를 사용하여 스테이지 레벨 제한 타겟을 생성하는 방법에 대한 자세한 내용은 create-stage를 참조합니다.

사용 계획에서 메서드 수준 제한 대상 구성

사용량 계획 생성에 표시된 대로 사용 계획의 메서드 수준에서 추가 제한 대상을 설정할 수 있습니다. API Gateway 콘솔에서는 메서드 조절 구성(Configure Method Throttling) 설정에서 Resource=<resource>, Method=<method>를 지정하여 설정합니다. 예를 들어, PetStore 예시에서 Resource=/pets, Method=GET을 지정할 수 있습니다.