AWS Lambda отслеживает и ограничивает аутентифицированные вызовы от пользователя

#amazon-web-services #aws-lambda #amazon-cognito

#amazon-веб-сервисы #aws-лямбда #amazon-cognito

Вопрос:

В настоящее время у меня есть корзина S3, на которой запущен статический веб-сайт с аутентификацией пользователя Cognito. Я вызываю лямбда-функцию из этого блока, которая проверяет токен JWT пользователя. Я пытаюсь ограничить количество вызовов, которые пользователь может сделать для этой функции, например, 1 раз в час. Как бы я это сделал?

  • Мой первоначальный план состоял в том, чтобы сделать что-то на интерфейсе, но это было бы легко обойти.
  • Я посмотрел, есть ли для этого сервис AWS, но самым близким, что я нашел, был Cloudtrail, который на самом деле не подходит для этого
  • В настоящее время я планирую создать пользовательские атрибуты Cognito, чтобы отслеживать, сколько вызовов совершил пользователь, и обновлять их через lambda, но это также кажется неправильным подходом

Ответ №1:

В AWS нет сервиса для такого варианта использования. Вы должны создать что-то самостоятельно.

Как я бы немного изменил архитектуру:

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

Я согласен, что здесь есть некоторые движущиеся части, но это, безусловно, упрощает задачу.

Я вижу, что вы обслуживаете напрямую с S3 попробуйте проверить интеграцию службы AWS API Gateway — там больше возможностей для аутентификации и проверки, включая регулирование. Например