Как передать параметры запроса в API-шлюз с серверной частью файла S3 json

Я новичок в AWS и следовал этому руководству: https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html, теперь я могу читать с ТЕСТ-консоль моего объекта AWS, хранящегося на s3, который выглядит следующим образом (это файл .json):

[ {важно: да, имя: джон, тип: мужчина}, { важно: да, имя: сара, тип: женщина}, {важно: нет, имя: максим, тип: мужчина} ]

Теперь я пытаюсь передать параметры запроса. Я добавил type в запрос метода и добавил параметр строки запроса URL с именем type с сопоставлением method.request.querystring.type в интеграции. Запрос.

Когда я хочу проверить, ввод type=male не принимается во внимание, я все равно получаю 3 элемента вместо 2 мужских элементов.

Как вы думаете, есть ли причины, по которым это происходит?

Для информации, Ресурсы выглядят следующим образом (и я использую тип интеграции AWS Service для создания метода GET, как описано в руководстве по AWS)

/
 /{folder}
  /{item}
   GET

person greeneye12    schedule 12.11.2020    source источник


Ответы (1)


Если кого-то интересует ответ, я смог решить свою проблему.

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

  1. Убедитесь, что ваш SQL-запрос к вашей базе данных s3 верен, для этого вы можете зайти в свою корзину s3, щелкнуть свой файл и выбрать запрос с помощью s3 select из действия.

  2. Убедитесь, что ваша лямбда-функция работает, поэтому убедитесь, что вы создаете и передаете правильный SQL-запрос из тестового события.

  3. Настройте строки запроса API на панели запроса метода и настройте шаблон сопоставления на панели запроса интеграции (для меня это выглядело так: TypeL1:$input.params('typeL1')) с использованием типа содержимого json.

Удачи !

person greeneye12    schedule 11.01.2021