Выполнение вызовов конечной точки AWS api gateway с ключом api с помощью почтальона клиента rest

мы разрабатываем мобильное / веб-приложение, для которого мы используем aws lambda и dynamo db в качестве бэкэнда.Автономные функции lambda работают отлично. Вызовы маршрутизируются через шлюз api. Мы используем ключи api для использования функций безопасности, которые он предоставляет. Для некоторых целей тестирования мы пытаемся вызвать конечную точку api через стороннего почтальона клиента rest.

запросы имеют тип POST, но независимо от того, что мы пытаемся, мы get

403 ("message": "Missing authentication token.")

снимок прилагается для справки. (несколько частей затенены по соображениям безопасности)

enter image description here

  1. мы не можем понять причину такого поведения.
  2. если то же самое может быть достигнуто с помощью другого инструмента, пожалуйста, предложите.

6 ответов


от работы с AWS API Gateway я попал в ту же ловушку, что и вы. Есть две вещи, которые могут вызвать пресловутый 403 ("message": "Missing authentication token.") сообщения:

  1. агрессивное кэширование CloudFront

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

  1. забыв о повторном развертывании

одной из основных особенностей API Gateway является то, как AWS обрабатывает несколько версий API. После развертывания вы можете быть в безопасности, зная, что ваши конечные точки API не изменится - именно то, что вы хотите от конечной точки API.

Это связано с способ развертывания конечных точек. Каждое изменение, внесенное в консоль AWS, должно быть развернуто в определенном развертывании для взаимодействия с live.

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

проблема, с которой вы можете столкнуться, заключается в том, что, хотя вы внесли много изменений в консоль AWS, вы, возможно, не были повторно развернуты в развертывании, которое вы тестируете в Postman.

Sidenote:

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


похоже, вы не добавили ресурс в свой URL-адрес. URL должен быть чем-то вроде:

https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource

но ваш больше похож на

https://my-api-id.execute-api.region-id.amazonaws.com/test

запрос путей шлюза API, которых нет, возвращает полезную нагрузку "message: Missing Authentication Token".

к сожалению, это довольно запутанным.


в моем случае это был метод, который я поддерживал POST и я пытался GET это в браузере. Я повторил, сделав POST в почтальоне и это сработало!


Мне пришлось добавить план использования API, а затем связать план с этапом API.

похоже, что это единственный способ связать ключ с API в AWS..


на странице редактора сцены есть левый навигатор с названием сцены. Если вы развернете это, вы получите косую черту; если вы развернете это, вы получите свой ресурс. Если вы развернете свой ресурс, вы получите свой метод, и если вы нажмете на метод, вы получите ссылку "Invoke URL" (которая такая же, как и выше, но с добавленным ресурсом). Эта ссылка invoke URL работает, вызывая метод GET и возвращая результаты.