0Pricing
AWS Solutions Architect · Урок

Ограничение частоты, кэширование и планы использования

Защитите внутренние сервисы ограничениями всплесковой и стабильной нагрузки, включите кэширование ответов и создайте планы использования с ключами API для партнёров.

«Ограничение частоты, кэширование и планы использования» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Почему ограничение скорости необходимо

Без ограничения скорости один неправильно работающий клиент или резкий всплеск трафика может перегрузить серверные сервисы — параллелизм Lambda, подключения RDS или нижестоящие API. Ограничение скорости в API Gateway ограничивает число запросов в секунду и допускает кратковременные всплески выше стабильной скорости. Для запросов, попавших под ограничение, немедленно возвращается ответ 429 Too Many Requests, и они не достигают серверной части, что защищает нижестоящие ресурсы от перегрузки.

Ограничение скорости на уровне аккаунта и этапа

Ограничение скорости действует на нескольких уровнях. Ограничение на уровне аккаунта составляет 10 000 запросов в секунду (RPS) с кратковременным всплеском до 5 000 запросов (мягкое ограничение, его можно увеличить). На уровне этапа можно задать скорость по умолчанию (RPS) и ограничение всплеска, применяемые ко всем методам этапа. На уровне метода можно переопределить значения этапа для отдельных конечных точек — например, назначить конечной точке GET с преобладанием операций чтения более высокий предел скорости, чем конечной точке POST с преобладанием операций записи.

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/*/*/throttling/rateLimit,value=1000' \
    'op=replace,path=/*/*/throttling/burstLimit,value=2000'

Алгоритм корзины токенов

API Gateway использует для ограничения скорости алгоритм корзины токенов. Токены накапливаются в корзине до значения ограничения всплеска (максимальной мгновенной пропускной способности). Каждый запрос расходует один токен. Токены пополняются со скоростью, заданной пределом скорости (стабильное значение RPS). Если корзина пуста, запросы ограничиваются. Пример: burst=5000, rate=1000 RPS. В начале можно обработать 5000 одновременных запросов; корзина пополняется со скоростью 1000 токенов в секунду. Это позволяет поглощать кратковременные всплески трафика и одновременно соблюдать долгосрочные ограничения скорости.

Кэширование ответов API Gateway

Кэширование ответов (доступно для этапов REST API) сохраняет ответы серверной части в кэше под управлением API Gateway, поэтому идентичные запросы обслуживаются из кэша без обращения к серверной части. Это снижает нагрузку на серверную часть и задержку, а также может значительно сократить расходы на вызовы Lambda для API с преобладанием операций чтения. Кэш индексируется по запросу (методу, пути, строкам запроса и заголовкам — в зависимости от конфигурации). TTL кэша настраивается от 0 до 3600 секунд (по умолчанию — 300 секунд).

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/cacheClusterEnabled,value=true' \
    'op=replace,path=/cacheClusterSize,value=0.5' \
    'op=replace,path=/*/*/caching/ttlInSeconds,value=300'

Настройка ключа кэша

По умолчанию ключом кэша является полный URL запроса. Вы можете настроить, какие элементы будут входить в ключ кэша: включить определённые параметры строки запроса, например pageSize и filter, но исключить нерелевантные параметры, например метку времени. Также можно включить в ключ кэша определённые заголовки. Исключайте конфиденциальные заголовки из ключа кэша, чтобы личные данные не загрязняли общие записи кэша. Настраивайте ключ кэша так, чтобы максимально повысить долю попаданий в кэш и при этом обеспечить разные кэшированные ответы для разных логических запросов.

Инвалидация кэша

Клиенты могут инвалидировать кэш для определённого запроса, добавив заголовок Cache-Control: max-age=0. Также можно полностью очистить кэш этапа через консоль или API. Настройте, разрешено ли клиентам инвалидировать кэш. В рабочей среде ограничьте такую возможность, чтобы клиенты не могли намеренно обходить кэширование. Чтобы выборочно предоставить разрешение на очистку, добавьте политику ресурсов или используйте авторизатор Lambda, который проверяет наличие у вызывающей стороны разрешения на очистку.

# Flush entire stage cache
aws apigateway flush-stage-cache \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

Планы использования: ограничения частоты для клиентов

План использования определяет ограничения пропускной способности и квоты для группы клиентов API. Свяжите этап API с планом использования, а затем свяжите с этим планом ключи API. Каждый ключ API независимо применяет ограничения плана. Планы использования позволяют предлагать уровни доступа: бесплатный план со 100 RPM и 10 000 запросами в день, план Pro с 1 000 RPM и 100 000 запросами в день. Эта модель используется для монетизации API и интеграций с партнёрами, которым нужны разные ограничения частоты запросов.

# Create a usage plan
aws apigateway create-usage-plan \
  --name 'ProTier' \
  --throttle 'rateLimit=1000,burstLimit=2000' \
  --quota 'limit=100000,period=DAY' \
  --api-stages 'apiId=abc123,stage=prod'

Ключи API и идентификация клиентов

Ключи API — это непрозрачные строковые токены, которые клиенты передают в заголовке запроса x-api-key. API Gateway проверяет ключ и связывает запрос с соответствующим планом использования. Ключи API НЕ являются механизмом безопасности — они используются только для идентификации клиентов при применении ограничений частоты и квот. Для обеспечения безопасности всегда сочетайте ключи API с надлежащей авторизацией (IAM, авторизатором Lambda или Cognito). К ключам API, не связанным с планом использования, ограничения частоты запросов не применяются.

# Create an API key and associate with usage plan
aws apigateway create-api-key \
  --name 'PartnerABC-Key' \
  --enabled

aws apigateway create-usage-plan-key \
  --usage-plan-id 'uvw321' \
  --key-id 'xyz789' \
  --key-type API_KEY

Ограничения квот в планах использования

Помимо ограничений частоты запросов в секунду, планы использования поддерживают ограничения квот: максимальное количество запросов за определённый период (DAY, WEEK или MONTH). После исчерпания квоты клиента последующие запросы возвращают код 429, пока квота не будет сброшена. Ограничения квот полезны для контроля бесплатного уровня, предотвращения злоупотреблений API и согласования потребления API с тарификацией. Счётчики квот в конечном итоге согласуются, поэтому клиент может немного превысить квоту, прежде чем доступ будет заблокирован.

Метрики CloudWatch для ограничения частоты и кэширования

Контролируйте состояние API Gateway с помощью следующих метрик CloudWatch:

  • Count: общее количество вызовов API
  • 4XXError: ошибки клиента, включая ограничения частоты 429
  • 5XXError: ошибки серверной части
  • Latency: сквозное время выполнения запроса
  • IntegrationLatency: время ожидания серверной части
  • CacheHitCount / CacheMissCount: эффективность кэша

Настройте оповещения при скачках 4XXError, чтобы обнаруживать проблемы с ограничением частоты до того, как они повлияют на пользователей, а также по CacheMissCount, чтобы выявлять проблемы с конфигурацией кэша.

Когда включать кэширование, а когда — ограничение частоты

Используйте кэширование для API с преобладанием операций чтения, где ответы меняются нечасто: для поиска товаров в каталоге, справочных данных и статических конфигураций. Кэширование неэффективно для данных, специфичных для пользователя, или часто изменяющихся данных. Всегда используйте ограничение частоты, даже для внутренних API, чтобы защитить серверные службы от перегрузки. Сочетайте оба подхода: кэшируйте часто запрашиваемые данные, чтобы снизить нагрузку на серверную часть, и активно ограничивайте частоту, чтобы один клиент не мог занять большую часть ресурсов API. Для экзамена SAA-C03 запомните: кэширование снижает стоимость и задержку, а ограничение частоты обеспечивает доступность.

Быстрая проверка

Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что ограничение частоты на уровне учётной записи, этапа и метода защищает серверные системы с помощью алгоритма ведра токенов с настраиваемыми ограничениями скорости и пакетной обработки; кэширование ответов сохраняет ответы серверной части на настраиваемый срок TTL, снижая нагрузку и задержку для конечных точек с преобладанием операций чтения; а планы использования с ключами API применяют ограничения частоты и квоты для отдельных клиентов, обеспечивая многоуровневое управление доступом к API партнёров и общедоступным API. Далее мы рассмотрим кластеры ECS, определения задач и службы для контейнеризованных рабочих нагрузок.

Часто задаваемые вопросы

Урок «Ограничение частоты, кэширование и планы использования» бесплатный?

Да — полный текст урока «Ограничение частоты, кэширование и планы использования» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Ограничение частоты, кэширование и планы использования»?

Защитите внутренние сервисы ограничениями всплесковой и стабильной нагрузки, включите кэширование ответов и создайте планы использования с ключами API для партнёров. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Ограничение частоты, кэширование и планы использования»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. REST API, HTTP API и WebSocket API
  2. Интеграции: Lambda, HTTP и имитация
  3. Авторизация: IAM, авторизаторы Lambda и Cognito
  4. Ограничение частоты, кэширование и планы использования
← Назад к AWS Solutions Architect