Подтвердить что ты не робот

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

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

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

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

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

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

  • Мы не можем понять основную причину поведения.
  • если то же самое можно достичь с помощью другого инструмента, пожалуйста, предложите.
4b9b3361

Ответ 1

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

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

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

  1. Забыть повторно развернуть

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

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

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

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

Sidenote:

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

Ответ 2

Похоже, что вы не добавили ресурс в свой 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

Ответ 3

Запрос маршрутов API-интерфейсов API, которые там не указаны, возвращает сообщение "Сообщение: Отсутствует токен аутентификации".

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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