Могу ли я использовать план использования в AWS API Gateway без привязки ключа API?

Документация AWS по планам использования шлюза API подразумевает, что они созданы с ключами API или прикреплены к ним, но не указывает, как они будут себя вести без них. У меня есть неавторизованный API, к которому я хотел бы применить регулирование. Могу ли я создать план использования, прикрепить его к ресурсу, не привязывая к нему API-ключ? Это будет работать?

Контекст: я пытаюсь использовать SDK CloudFormation для Java для определения стека, и я не могу понять, как программно указать дросселирование для конкретных ресурсов. Я также приму ответ, который расскажет мне, как это сделать, не используя консоль.


person jayjyli    schedule 16.10.2019    source источник
comment
Я тоже хочу это знать, меня это смущает. У меня есть приложение, в котором я хочу применить настройки газа (burstlimit, ratelimit) для всех пользователей. Зачем мне для этого нужен ключ api?   -  person August    schedule 13.12.2019


Ответы (3)


Могу ли я создать план использования, прикрепить его к ресурсу, не привязывая к нему API-ключ? Это будет работать?

Нет, но в зависимости от вашего варианта использования я думаю, что вам нужно регулирование на стороне сервера, а не для каждого клиента. В документах описывается различие:

Amazon API Gateway предоставляет два основных типа настроек, связанных с регулированием:

  • Ограничения регулирования на стороне сервера применяются ко всем клиентам. Эти настройки ограничения существуют для предотвращения перегрузки вашего API - и вашей учетной записи - слишком большим количеством запросов.

  • Ограничения регулирования для каждого клиента применяются к клиентам, которые используют ключи API, связанные с вашей политикой использования, в качестве идентификатора клиента.

Установите регулирование метода на стороне сервера в консоли AWS

Вы можете установить скорость по умолчанию и ограничения пакета для всех методов на этапе. В консоли AWS это можно сделать, выбрав Этапы ›your_stage› Настройки ›Регулировка метода по умолчанию.

введите описание изображения здесь

Установите регулирование метода на стороне сервера в шаблоне Cloudformation

Я не могу понять, как программно указать ограничения для конкретных ресурсов.

См. Приведенный ниже фрагмент шаблона Cloudformation для создания этапа с настройками метода из здесь:

Resources:
  Prod:
    Type: AWS::ApiGateway::Stage
    Properties:
      StageName: Prod
      Description: Prod Stage
      RestApiId: !Ref MyRestApi
      DeploymentId: !Ref TestDeployment
      DocumentationVersion: !Ref MyDocumentationVersion
      ClientCertificateId: !Ref ClientCertificate
      Variables:
        Stack: Prod
      MethodSettings:
        - ResourcePath: /
          HttpMethod: GET
          MetricsEnabled: 'true'
          DataTraceEnabled: 'false'
        - ResourcePath: /stack
          HttpMethod: POST
          MetricsEnabled: 'true'
          DataTraceEnabled: 'false'
          ThrottlingBurstLimit: '999'
        - ResourcePath: /stack
          HttpMethod: GET
          MetricsEnabled: 'true'
          DataTraceEnabled: 'false'
          ThrottlingBurstLimit: '555'
person theodoreh    schedule 26.03.2021

К сожалению, планы использования не работают без ключа api. Из официальной документации.

План использования определяет, кто может получить доступ к одному или нескольким развернутым этапам и методам API, а также сколько и как быстро они могут получить к ним доступ. План использует ключи API для идентификации клиентов API и измеряет доступ к связанным этапам API для каждого ключа. Он также позволяет настраивать ограничения регулирования и ограничения квот, которые применяются к отдельным ключам клиентского API.

person Musa Çıbık    schedule 26.03.2021

Вы можете настроить свой ThrottleSettings в AWS::ApiGateway::UsagePlan вот так:

Resources:
  UsagePlan:
    Type: AWS::ApiGateway::UsagePlan
    Properties:
      ThrottleSettings:
        BurstLimit:
        RateLimit:

Из документации API Gateway по Регулирование запросов API для улучшения Пропускная способность:

Amazon API Gateway предоставляет два основных типа настроек, связанных с регулированием:

  • Ограничения регулирования на стороне сервера применяются ко всем клиентам. Эти настройки ограничения существуют для предотвращения перегрузки вашего API и вашей учетной записи слишком большим количеством запросов.

  • Ограничения регулирования для каждого клиента применяются к клиентам, которые используют ключи API, связанные с вашей политикой использования, в качестве идентификатора клиента.

person Pat Myron    schedule 16.10.2019
comment
Я не об этом спрашиваю. В документе «План использования» не говорится, как он будет себя вести, если вы не прикрепите к нему какие-либо ключи API. Он блокирует любой доступ? Применяется ли это для всех абонентов? Ничего не делает? В качестве альтернативы также может быть приемлем способ программной установки дросселирования на уровне метода через CloudFormation без использования плана использования. - person jayjyli; 18.10.2019