구독으로 호출 속도 제한
적용 대상: 모든 API Management 계층
rate-limit
정책은 호출 속도를 지정된 기간당 지정된 숫자로 제한하여 구독 하나당 최대 API 사용을 차단합니다. 호출 속도를 초과할 경우 호출자는 429 Too Many Requests
응답 상태 코드를 수신합니다.
속도 제한과 할당량 간의 차이를 이해하려면 속도 제한 및 할당량을 참조하세요.
주의
제한 아키텍처의 분산 특성으로 인해 속도 제한은 완전히 정확하지 않습니다. 구성된 요청 수와 허용되는 실제 요청 수의 차이는 요청 볼륨 및 속도, 백 엔드 대기 시간 및 기타 요인에 따라 달라집니다.
참고 항목
정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.
정책 문
<rate-limit calls="number" renewal-period="seconds" retry-after-header-name="custom header name, replaces default 'Retry-After'"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name">
<api name="API name" id="API id" calls="number" renewal-period="seconds" >
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
</api>
</rate-limit>
특성
특성 | 설명 | 필수 항목 | 기본값 |
---|---|---|---|
호출 | renewal-period 에 지정된 시간 간격 동안 허용된 전체 최대 호출 수입니다. 정책 식은 허용되지 않습니다. |
예 | 해당 없음 |
renewal-period | 허용되는 요청 수가 calls 에 지정된 값을 초과하지 않아야 하는 슬라이딩 윈도우의 길이(초 단위)입니다. 허용되는 최대값: 300초. 정책 식은 허용되지 않습니다. |
예 | 해당 없음 |
retry-after-header-name | 값이 지정된 호출 속도가 초과된 후 권장되는 재시도 간격(초)인 사용자 지정 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. | 아니요 | Retry-After |
retry-after-variable-name | 지정된 호출 속도를 초과한 후 권장되는 재시도 간격(초)을 저장하는 변수의 이름입니다. 정책 식은 허용되지 않습니다. | 아니요 | 해당 없음 |
remaining-calls-header-name | 각 정책 실행 후 값이 renewal-period 에 지정된 시간 간격에 허용되는 나머지 호출 수인 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. |
아니요 | 해당 없음 |
remaining-calls-variable-name | 각 정책 실행 후 renewal-period 에 지정된 시간 간격에 허용되는 나머지 호출 수를 저장하는 변수의 이름입니다. 정책 식은 허용되지 않습니다. |
아니요 | 해당 없음 |
total-calls-header-name | calls 에 값이 지정된 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. |
아니요 | 해당 없음 |
Elements
요소 | 설명 | 필수 |
---|---|---|
api | 제품 내에서 API에 호출 속도 제한을 적용하려면 해당 요소 중 하나 이상을 추가합니다. 제품 및 API 호출 속도 제한은 독립적으로 적용됩니다. API는 name 또는 id 를 통해 참조할 수 있습니다. 두 특성이 모두 제공되면 id 는 사용되지만 name 은 무시됩니다. |
아니요 |
operation | API 내에서 작업에 호출 속도 제한을 적용하려면 해당 요소 중 하나 이상을 추가합니다. 제품, API 및 작업 호출 속도 제한은 독립적으로 적용됩니다. 작업은 name 또는 id 를 통해 참조할 수 있습니다. 두 특성이 모두 제공되면 id 는 사용되지만 name 은 무시됩니다. |
아니요 |
api 특성
attribute | 설명 | 필수 항목 | 기본값 |
---|---|---|---|
name | 속도 제한을 적용할 API의 이름입니다. | name 또는 id 를 지정해야 합니다. |
해당 없음 |
id | 속도 제한을 적용할 API의 ID입니다. | name 또는 id 를 지정해야 합니다. |
해당 없음 |
호출 | renewal-period 에 지정된 시간 간격 동안 허용된 전체 최대 호출 수입니다. 정책 식은 허용되지 않습니다. |
예 | 해당 없음 |
renewal-period | 허용되는 요청 수가 calls 에 지정된 값을 초과하지 않아야 하는 슬라이딩 윈도우의 길이(초 단위)입니다. 허용되는 최대값: 300초. 정책 식은 허용되지 않습니다. |
예 | 해당 없음 |
작업 특성
attribute | 설명 | 필수 항목 | 기본값 |
---|---|---|---|
name | 속도 제한을 적용할 작업의 이름입니다. | name 또는 id 를 지정해야 합니다. |
해당 없음 |
id | 속도 제한을 적용할 작업의 ID입니다. | name 또는 id 를 지정해야 합니다. |
해당 없음 |
호출 | renewal-period 에 지정된 시간 간격 동안 허용된 전체 최대 호출 수입니다. 정책 식은 허용되지 않습니다. |
예 | 해당 없음 |
renewal-period | 허용되는 요청 수가 calls 에 지정된 값을 초과하지 않아야 하는 슬라이딩 윈도우의 길이(초 단위)입니다. 허용되는 최대값: 300초. 정책 식은 허용되지 않습니다. |
예 | 해당 없음 |
사용
사용법 참고 사항
- 이 정책은 정책 정의당 한 번만 사용할 수 있습니다.
- 이 정책은 구독 키를 사용하여 API에 액세스할 때만 적용됩니다.
- 자체 호스팅 게이트웨이의 속도 제한 수는 예를 들어, Kubernetes용 Helm 차트 배포 또는 Azure Portal 배포 템플릿 사용을 통해 클러스터 노드 전체의 게이트웨이 인스턴스 간에 로컬로 동기화하도록 구성할 수 있습니다. 그러나 속도 제한 수는 클라우드의 관리 게이트웨이를 포함하여 API Management 인스턴스에 구성된 다른 게이트웨이 리소스와 동기화되지 않습니다. 자세한 정보
예시
다음 예제에서 구독당 속도 제한은 90초당 20개 호출입니다. 각 정책 실행 후 해당 기간에 허용되는 나머지 호출은 변수 remainingCallsPerSubscription
에 저장됩니다.
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
관련 정책
관련 콘텐츠
정책 작업에 대한 자세한 내용은 다음을 참조하세요.
- 자습서: API 변환 및 보호
- 정책 문 및 해당 설정에 대한 전체 목록에 대한 정책 참조
- 정책 식
- 정책 설정 또는 편집
- 정책 구성 재사용
- 정책 코드 조각 리포지토리
- Azure API Management 정책 도구 키트
- Azure의 Microsoft Copilot을 사용하는 작성자 정책