Шлюз API aws - {"message": "Отсутствует токен аутентификации"} - PullRequest
0 голосов
/ 09 ноября 2019

Моя лямбда работает локально и возвращает JSON.
Мой API Gateway работает локально, то есть вызывает лямбда и возвращает JSON.

Однако, когда я публикую свой API на этапе DEV, а затем пытаюсьиспользуйте URL-адрес вызова - https://jbpqyp3142.execute -api.us-east-2.amazonaws.com / DEV Я получаю

{"message":"Missing Authentication Token"}

Лямбда:

require 'json'

def lambda_handler(event:, context:)
  if event['queryStringParameters'].nil?
    input = 1
  else
    if event['queryStringParameters']['in']
      input = event['queryStringParameters']['in'].to_i
    else
      input = 1
    end
  end
  triple = (input * 3).to_s
  { statusCode: 200, body: JSON.generate("Hello from Lambda! Result is " + input.to_s + " *3 = " + triple) }
end

Шлюз API:

enter image description here


Я пытался создать «Авторизатор», но получил следующую ошибку:

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Когда вашему API-шлюзу требуется ключ API, вы должны передать его в заголовке запроса. x-api-key: yourkey

Вы можете проверить это в разделе Ресурсы - POST - Метод выполнения вашего API.

0 голосов
/ 09 ноября 2019

Вам не нужен авторизатор, если он не нужен для вашего случая использования. Подробнее о контроле доступа к API Gateway: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html

Я подумал, что ваша проблема может заключаться в том, что вы не подписываете свои запросы с помощью SigV4: https://docs.aws.amazon.com/apigateway/api-reference/signing-requests/

Однако, прежде чем написать этот ответ, ясделал быстрый поиск, чтобы увидеть, есть ли что-нибудь попроще, я мог бы пропустить, и было. Кажется, что вы делаете запрос к корневому URL для своей конечной точки, но не указываете ресурс, который запрашиваете. Результат переполнения верхнего стека при поиске получаемой ошибки объясняет проблему: https://stackoverflow.com/a/43285585/715780

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...