Запуск лямбда-функций для проверки на стороне сервера с помощью AppSync и DynamoDB - PullRequest
0 голосов
/ 20 октября 2018

Мне очень понравилось работать с AWS Amplify в последнее время, его генерация кода для запросов GraphQL, основанная на определенной схеме, выдающаяся.

Я столкнулся с одной сложностью при определении пользовательской логики /проверка на стороне сервера.Из пакета AppSync (часть, ответственная за API GraphQL в Amplify) генерирует преобразователи и таблицы DynamoDB для вашей схемы.Решатели создаются с использованием Apache Velocity языка шаблонов, и, если вы новичок в этом, на мой взгляд, это своего рода кривая обучения.

Кроме того, эти преобразователи автоматически генерируются Amplify cli.Я не уверен, имеет ли смысл их редактирование в консоли AppSync или локально, так как каждый раз, когда мы нажимаем изменения API, они автоматически генерируются снова?

Чтобы добавить к этому, эти преобразователи, автоматически генерируемые, достигаютмного с точки зрения объединения моделей типов, включая поиск и проверки подлинности, я действительно не хочу касаться их, так как скорость разработки, включаемая автоматической генерацией, безумнакажется, что это лямбда-функции, которые прослушивают события создания / обновления связанных таблиц DynamoDB.

Я думаю, что я могу настроить это так, как показано ниже, по сути, позволяя пользователям использовать GraphQL api нормально и когда действие, которое требуетвыполняется проверка сервера, реагировать на него в лямбде?

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

  1. Мы разрешаем сначала записывать непроверенные данные в базу данных (хотя это проверяется системой типов graphql и проверкой подлинности перед.)
  2. Дополнительные расходыза привлечение лямбды (на мой взгляд, стоит сэкономить время и возможность использовать NodeJS вместо Apache Velocity для определения языка)

Я что-то упускаю?

enter image description here

Таким образом, лямбда выполнит проверку за кулисами, мы предполагаем, что большинство пользователей здесь хорошие актеры, и данные, которые они передают в GraphQL api, верны, поскольку они используют наш клиент.

Если данные неожиданны (плохой актер), lambda отреагирует и забанит пользователя.

Является ли это решение жизнеспособным / распространенным, есть ли другая альтернатива?

...