Appsync在响应后调用lambda吗?

时间:2018-12-06 15:01:11

标签: aws-lambda graphql aws-appsync aws-amplify

示例问题:

用户可以在我们的网站上发布自己的文章。但是,每个用户只能发布5篇文章,而当他们发布其第五篇文章时,我们希望向他们发送电子邮件。


仅使用左轮手枪,是否有可能按时返回突变响应,然后懒惰/异步调用向用户发送电子邮件的lambda函数?

1 个答案:

答案 0 :(得分:2)

是的,那应该很有可能。这取决于要使用哪种解析器。如果您使用的是Lambda数据源:

  • 正如您提到的,Lambda调用可以为asynchronous,因此 您可以在Lambda解析器中执行一个,然后看到最少的额外开销。
  • 您可以使用Lambda事件源。例如,今年早些时候,Lambda推出了SQS event-based Lambda invocations。这意味着,您的Lambda解析器会将带有某些事件上下文的消息放入SQS队列(例如帐户信息,电子邮件地址等),然后您将有一个Lambda侦听该队列。它会自动进行轮询,因此它将立即调用并解析该消息,然后您将通过该电子邮件发送电子邮件。
  • 根据个人喜好/应用需求,您还可以找到其他Lambda事件来源,所有这些来源都可以在docs中看到。具体来说,您可能会发现SNS和/或Kinesis是可行的选择。从概念上讲,它们是相同的-您的解析器将消息推送到某些AWS服务中,并且事件驱动的Lambda将自动被调用。

如果您使用的是DynamoDB数据源:

  • 您可以在表上设置DynamoDB流,并连接事件驱动的Lambda来监听该流。

无论如何,您可能会发现pipeline resolvers是有用的。它使您可以建立线性,同步的解析器链来解决一些更复杂的问题。您可以进行初始的Lambda函数/ DDB查找以获取帖子数(如果某人处于其极限,则可能会失败),然后再使用第二个解析器来执行常规操作,然后甚至可能有三分之一可以发送电子邮件有人达到了极限。