Appsync - вызывать лямбда-выражение после ответа?

Пример проблемы:

Пользователь может размещать собственные статьи на нашем сайте. Однако каждый пользователь может опубликовать только 5 статей, и когда они публикуют свою 5-ю статью, мы хотим отправить им электронное письмо.


Можно ли, используя только револьверы, вовремя вернуть ответ на мутацию, а затем лениво / асинхронно вызвать лямбда-функцию, которая отправляет электронное письмо пользователю?


person Corada    schedule 06.12.2018    source источник


Ответы (1)


Да, это должно быть вполне возможно. Это немного зависит от того, какой резолвер вы хотите использовать. Если вы использовали источник данных Lambda:

  • Как вы упомянули, вызовы Lambda могут быть асинхронными, так что вы можете выполнить его внутри преобразователя Lambda и увидеть минимальные дополнительные накладные расходы.
  • Вы можете использовать источник событий Lambda. Например, ранее в этом году Lambda запустила Lambda-вызовы на основе событий SQS. Это означает, что ваш преобразователь Lambda поместит сообщение с некоторым контекстом события в очередь SQS (например, информацию об учетной записи, адрес электронной почты и т. Д.), И тогда у вас будет Lambda, которая прослушивает эту очередь. Он автоматически опрашивает, поэтому он немедленно вызывает и анализирует это сообщение, и вы отправляете электронное письмо оттуда.
  • Существуют дополнительные источники событий Lambda, которые могут оказаться полезными в зависимости от личных предпочтений / потребностей приложения. Все они видны в документы. В частности, вы можете найти социальные сети и / или Kinesis как жизнеспособные варианты. Концептуально они одинаковы - ваш преобразователь отправляет сообщение в какой-либо сервис AWS, и автоматически запускается управляемая событиями Lambda.

Если вы использовали источник данных DynamoDB:

  • Вы можете настроить потоки DynamoDB на своем столе и подключить управляемую событиями Lambda, которая прослушивает этот поток.

В любом случае вы можете найти конвейерные преобразователи для быть полезным. Он позволяет вам создать линейную синхронную цепочку резолверов для решения некоторых более сложных проблем. У вас может быть начальная функция Lambda / поиск DDB, чтобы получить количество сообщений (и потенциально потерпеть неудачу, если кто-то исчерпал свой предел), затем второй преобразователь после этого, чтобы выполнить ваше обычное действие, а затем, возможно, даже третий, который может отправить электронное письмо что кто-то достиг предела.

person Jeff Bailey    schedule 06.12.2018
comment
Ух ты, я никогда раньше не видел потоки DynamoDB. Я думаю, что для моего случая это идеальное решение и поддерживает четкую организацию задач, которые я ищу. Также очень заинтересованы в преобразователях конвейера. Я попробую оба и посмотрю, что работает лучше всего. Спасибо за очень четкий ответ. На AWS так много всего, что трудно все это знать! - person Corada; 08.12.2018