Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Базовая версия 2 | Стандартный | Standard v2 | Премиум | Премиум версии 2
Политика rate-limit-by-key предотвращает пики использования API для каждого ключа, ограничивая частоту вызовов до указанного числа за определенный период времени. Ключ может содержать произвольное строковое значение и обычно указывается с помощью выражения политики. Чтобы указать, какие запросы следует учитывать для ограничения, можно добавить дополнительное условие увеличения. При превышении предела вызовов вызывающий объект получает код состояния ответа 429 Too Many Requests.
Сведения о разнице между ограничениями скорости и квотами см. в разделе "Пределы скорости и квоты".
Внимание
Из-за распределенной архитектуры регулирования ограничение скорости никогда не является полностью точным. Разница между настроенным числом разрешенных запросов и фактическим числом зависит от объема запросов и скорости, задержки серверной части и других факторов.
Примечание.
Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Чтобы помочь вам настроить эту политику, портал предоставляет интерактивный редактор на основе форм. Узнайте, как устанавливать или изменять политики службы управления API.
Правило политики
<rate-limit-by-key calls="number"
renewal-period="seconds"
increment-condition="condition"
increment-count="number"
counter-key="key value"
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"/>
Атрибуты
| Атрибут | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
| вызывает | Максимальное общее количество вызовов, разрешенных для значения ключа в течение интервала времени, указанного в параметре renewal-period. Допустимы выражения политики. |
Да | Н/П |
| counter-key | Ключ, используемый для политики ограничения частоты. Для каждого значения ключа используется один счетчик для всех областей, для которых настроена политика. Допустимы выражения политики. | Да | Н/П |
| инкремент-условие | Логическое выражение, указывающее, следует ли учитывать запрос в сторону скорости (true). Выражения политики разрешены, но будут откладывать действия приращения и оценки до конца исходящего конвейера. |
нет | Н/П |
| добавочное число | Число, на которое увеличивается счетчик, для каждого запроса. Допустимы выражения политики, но отложят увеличение оценки и счетчика до конца исходящего конвейера. | нет | 1 |
| период продления | Длина скользящего окна в секундах, в течение которого количество разрешенных запросов должно быть не больше значения, указанного в параметре calls. Максимально допустимое значение: 300 секунд. Допустимы выражения политики. |
Да | Н/П |
| retry-after-header-name | Имя пользовательского заголовка ответа, значение которого является рекомендуемой интервалом повтора в секундах после превышения указанной скорости вызова для значения ключа. Выражения политики не допускаются. | нет | Retry-After |
| retry-after-variable-name | Имя переменной выражения политики, которая сохраняет рекомендуемый интервал повтора в секундах после превышения указанной скорости вызова для значения ключа. Выражения политики не допускаются. | нет | Н/П |
| остальные вызовы-заголовок-name | Имя заголовка ответа, значение которого после каждого выполнения политики — это число оставшихся вызовов, разрешенных для значения ключа в интервале времени, указанном в параметре renewal-period. Выражения политики не допускаются. |
нет | Н/П |
| оставшееся имя-calls-variable-name | Имя переменной выражения политики, которая после каждого выполнения политики сохраняет количество оставшихся вызовов, разрешенных для значения ключа в интервале времени, указанном в параметре renewal-period. Выражения политики не допускаются. |
нет | Н/П |
| total-calls-header-name | Имя заголовка ответа, значение которого равно значению, указанному в параметре calls. Выражения политики не допускаются. |
нет | Н/П |
Использование
- Разделы политики: inbound.
- Области политики: глобальная, рабочая область, продукт, API, операция
- Шлюзы: классическая, версия 2, локальная, рабочая область
Примечания об использовании
- Управление API использует один счетчик для каждого
counter-keyзначения, указанного в политике. Счетчик обновляется во всех областях, в которых политика настроена с этим значением ключа. Если вы хотите настроить отдельные счетчики в разных областях (например, определенный API или продукт), укажите разные значения ключей в разных областях. Например, добавьте строку, которая определяет область к значению выражения. - Количество ограничений скорости в локальном шлюзе можно настроить для синхронизации локально (между экземплярами шлюза между узлами кластера), например с помощью развертывания диаграмм Helm для Kubernetes или с помощью шаблонов развертывания портал Azure. Однако количество ограничений скорости не синхронизируется с другими ресурсами шлюза, настроенными в экземпляре Управление API, включая управляемый шлюз в облаке. Подробнее
- Эта политика отслеживает вызовы независимо от каждого шлюза, в котором он применяется, включая шлюзы рабочей области и региональные шлюзы в развертывании с несколькими регионами. Он не агрегирует данные вызова по всему экземпляру.
- Когда
increment-conditionилиincrement-countопределяются с помощью выражений, оценка и увеличение счетчика ограничений скорости откладываются до конца исходящего конвейера, чтобы разрешить выражения политики на основе ответа. Превышение превышения условия не оценивается одновременно в этом случае и будет оцениваться при следующем входящем вызове. Это приводит к случаям, когда429 Too Many Requestsкод состояния возвращается 1 вызова позже, чем обычно.
Пример
В следующем примере ограничение частоты имеет значение в 10 вызовов в течение 60 секунд, а также содержит ключ, состоящий из IP-адреса вызывающего объекта. После каждого выполнения политики остальные вызовы, разрешенные для этого вызывающего IP-адреса в период времени, хранятся в переменной remainingCallsPerIP.
<policies>
<inbound>
<base />
<rate-limit-by-key calls="10"
renewal-period="60"
increment-condition="@(context.Response.StatusCode == 200)"
counter-key="@(context.Request.IpAddress)"
remaining-calls-variable-name="remainingCallsPerIP"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Дополнительные сведения и примеры этой политики см. в статье Расширенное регулирование запросов с помощью управления API.
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство. Преобразование и защита API
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- Репозиторий игровой площадки политики
- Набор средств политики Управление API Azure
- Получите помощь Copilot для создания, объяснения и устранения неполадок в политике