Автоматизировать преобразователь Lambda для AppSync с помощью Amplify?

У меня установлено приложение React с AWS Amplify. Первоначальная цель приложения - действовать как портал для AWS Appstream. Пользователи могут войти в систему и запустить экземпляр потоковой передачи через API Appstream.

Часть, которая генерирует URL-адрес потоковой передачи, является лямбда-функцией. В настоящее время это вызывается непосредственно из приложения через SDK AWS (контекст IAM материализуется через Cognito). Однако функциональность портала будет расти, и мне, вероятно, понадобится api. Для этого я подумываю использовать AppSync / GraphQL.

Но мне было интересно, могу ли я упростить шаблоны кодирования в приложении, используя исключительно GraphQL. То есть могу ли я использовать GraphQL / AppSync для вызова созданной мной лямбда-функции? Есть несколько причин, по которым я хочу это сделать:

  1. Моя главная цель - свести Amplify к общему протоколу (в данном случае GraphQL). Это означает, что я могу создать версию портала, работающую локально. Это также помогает поддерживать другую цель, которая у меня есть - с помощью GraphQL он может сделать возможным изменение облачных провайдеров (без переписывания всего).

  2. Я хотел бы создать прототип приложения на Elm - чтобы увидеть, будет ли практичным кодирование с использованием Amplify. В Elm нет библиотек AWS / Amplify. Но есть библиотека GraphQL. Это может предоставить средства для уменьшения взаимодействия

  3. Я мог бы добавить Rest api для вызова Lambda, но было бы неплохо сохранить доступ api к одному методу

Извините, если это наивный вопрос - сейчас я изучаю AppSync / GraphQL, Lambda и Amplify.

Глядя на сам AppSync, кажется, что я мог бы создать объект с именем Fleet и сделать streamingUrl свойством, возвращаемым GetFleet(). Затем я мог бы присоединить преобразователь к лямбда-функции для этого свойства. Однако, кажется, нет очевидного способа настроить это через Amplify. Я успешно воссоздал свою лямбда-функцию через amplify function add, что приятно.

Есть ли способ автоматизировать это с помощью Amplify? Может дело в создании собственного Преобразование GraphQL? Или в Amplify уже есть что-то для этого, а я этого просто не вижу?

Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
В этой статье мы рассмотрим, как включить доступ Java Lambda к экземпляру AWS RDS MySQL.
3
0
1 383
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

ОБНОВИТЬ:

Кажется, теперь это возможно с AppSync. Подробнее об этом можно прочитать здесь и здесь

ОРИГИНАЛЬНЫЙ ОТВЕТ:

В ответ на часть вопроса о вызове Lambda через GraphQL:

Я думаю, что это возможно прямо сейчас с AppSync, но не с Amplify.

Использование консоли AppSync позволит вам создать преобразователь Lambda - в настоящее время Amplify не поддерживает это. Когда вы публикуете из Amplify, ваш преобразователь будет перезаписан.

Похоже, что эта проблема прорабатывается:

https://github.com/aws-amplify/amplify-cli/issues/74

https://github.com/aws-amplify/amplify-cli/issues/83

Да, вы можете сделать это на Amplify.

Документы

Усилить: https://aws-amplify.github.io/docs/cli-toolchain/graphql#function

AWS AppSync (также стоит прочитать, чтобы получить полезные общие рекомендации): https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html

Пример:

Прохождение + Репозиторий кода:

Другие вопросы по теме