Реализация заголовков ограничения скорости из API Gateway? - PullRequest
0 голосов
/ 04 февраля 2019

Я реализую API, используя AWS API Gateway.Я использую нативные ключи API и планы использования для ограничения количества клиентов.Тем не менее, я хотел бы добавить информацию об использовании данных в мои ответы API, что-то вроде заголовков X-RateLimit-Remaining и X-RateLimit-Reset.

Я обратился в службу поддержки AWS, если не было никакой собственной реализации, так как это(По крайней мере IMO) очень распространенное требование.Нет.

Затем я посмотрел на реализацию этих заголовков, используя некоторые вызовы API использования AWS (даже если мне не очень нравится добавлять накладные расходы на вызовы API для каждого из моих запросов).Но мне нужен идентификатор ключа API, а не значение ключа API (единственное, которое у меня есть в моих запросах).Согласно этому потоку AWS , вероятно, не будет никакого метода поиска по значению ключа API.

На этом шаге я могу представить только два решения:

  • Прокрутите список всех ключей API, чтобы найти правильный.Но это не будет масштабироваться.
  • Обработка данных, ограничивающих скорость, с нашей стороны (например, использование сервера Redis для отслеживания всех вызовов).Но это потребует много работы и подвергнет нас высоким рискам десинхронизации.

Как вы делитесь использованием данных в своих ответах API?Я что-то пропустил?

1 Ответ

0 голосов
/ 04 февраля 2019

Я думаю, что вы можете достичь этого, поставив CloudFront перед своим API-шлюзом.Затем вы можете создать поведение кэша для базовых путей API, в которые вы хотели бы добавить заголовки ответа ограничения скорости.Если это будет для всех путей, вам нужно изменить поведение по умолчанию.

Вам нужно будет использовать Lambda @ Edge , чтобы изменить заголовки ответа источника.Вы можете вызвать AWS Usage API в своей функции Lambda @ Edge, а затем присоединить заголовки ответов, используя действие Response Viewer в поведении кэша CloudFront.

...