Возможно ли иметь бизнес-логику в мутации моего AppSync, когда источником данных является DynamoDB?
Я новичок в GraphQL и Appsync. Насколько я понимаю, когда вы используете простой GraphQL, у вас может быть бизнес-логика внутри вашего преобразователя для проверки перед обновлением. Как добиться того же с помощью AWS AppSync, если передать ему схему GraphQL с DynamoDB в качестве источника данных?





В AWS AppSync вы должны присоединить преобразователь к полю, которое сопоставлено с источником данных DynamoDB. Затем вы можете использовать шаблон Velocity, чтобы иметь свою собственную бизнес-логику внутри преобразователя для любых проверок.
См. следующая документация в руководстве по программированию шаблона сопоставления резолвера от AWS.
Вот ссылка на шаблон сопоставления для резолверов DynamoDB.
Мы понимаем, что работа с VTL - самая болезненная часть использования AWS AppSync сегодня, и мы работаем над несколькими вещами, чтобы сделать этот процесс как можно более простым, чтобы для большинства сценариев было написано очень мало или совсем не было кода VTL. Например, проверьте GraphQL Transformer в ampify-cli: github.com/aws-amplify/amplify-cli/blob/master/….
Согласно Веб-сайт AWS AppSync: С помощью AppSync ваше приложение может получать доступ к данным в Amazon DynamoDB, запускать функции AWS Lambda или выполнять запросы Amazon Elasticsearch..
Вы можете думать об этом как о шлюзе для клиентов для доступа к различным бэкэндам (источникам данных), определяемым шаблонами сопоставления, прикрепленными к полям GraphQL (преобразователям).
AppSync изначально поддерживает запросы DynamoDB и ElasitcSearch, но если вы хотите выполнять бизнес-логику, вам нужно будет добавить источник данных AWS Lambda, а затем использовать AWS SDK для чтения / записи DynamoDB или чего-либо еще, например другого API или, возможно, даже файла Excel!
Кроме того, вы можете использовать Apache VTL вместе с доступными помощниками AppSync, такими как $ context, чтобы помочь вам выполнить авторизацию или доступ к данным поля на основе разрешений. Имейте в виду, что ваш преобразователь DynamoDB или ES может выполнить только 1 операцию в конце, Apache VTL поможет вам создать преобразователь, который будет запускаться AppSync.
Вот две диаграммы, сравнивающие традиционный подход и appsync.
Спасибо. Я видел VTL, но втайне надеялся, что это не способ сделать это. Я понимаю, почему люди предпочитают иметь собственный GraphQL внутри Lambda, а не использовать AppSync.