При использовании AWS AppSync с источниками лямбда-данных вы можете столкнуться с проблемой запроса N + 1.
В основном, когда у вас есть индивидуальный преобразователь полей для вашего типа и ваш запрос возвращает массив этих типов, лямбда-выражение преобразователя полей будет вызываться N раз.
AWS вводит лямбда-выражения BatchInvoking в преобразователях для решения этой проблемы. Подробнее о проблеме и ее решении можно прочитать здесь: https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#advanced-use-case-batching
Однако их решение не работает. Лямбда-выражения BatchInvoking ограничены всего 5 событиями (это не указано в документации). Это небольшое улучшение проблемы N + 1 (это делает ее N / 5 + 1), но я думаю, что этого недостаточно, поскольку более сложные запросы, как правило, выполняются в течение очень долгого времени и требуют большего количества вызовов лямбда.
Итак, мой вопрос: как вы справляетесь с этой проблемой? Есть ли лучшее решение для этого?
Это было бы очень полезно и действительно решило бы эту проблему наилучшим образом, спасибо!
Я столкнулся с той же проблемой. Это серьезная проблема, потому что у нас есть сотни ресурсов с подресурсами, которые решаются за один вызов внешнего API (с текущим N / 5 было бы неэффективно выполнять такое количество вызовов API). Жаль, что это НЕ задокументировано.
Прошло полгода, а обходного пути пока нет. @Karthik, это есть в дорожной карте?
Есть обновления по этой теме? Мы ищем надежное решение GraphQL, которое должно служить фасеткой для десятков REST-сервисов. В настоящее время это ограничение не кажется блокирующим на начальных этапах, но мы не хотим сталкиваться с ним на полпути.
@ArthurGurov Я думаю, что сейчас лучше использовать Apollo GraphQL, вы можете разместить сервер apollo на обычном экземпляре aws ec2 или даже на aws lambda, если хотите
Есть новости по этой проблеме? Это серьезное ограничение
Просто протестировал это снова с чистой настройкой, и это недокументированное и неизменяемое поведение все еще имеет место. Можно было бы ожидать, что AWS хотя бы задокументирует это поведение после 3 лет, когда его не добавляли, но нет.
Вы пробовали добавить кеширование PerResolver? docs.aws.amazon.com/appsync/latest/devguide/…





Я работаю в команде AWS AppSync. Я буду счастлив передать это как запрос функции для настройки размера пакета для вызова пакета.