首页 > 解决方案 > Appsync 在响应后调用 lambda?

问题描述

示例问题:

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


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

标签: aws-lambdagraphqlaws-appsyncaws-amplify

解决方案


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

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

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

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

无论如何,您可能会发现管道解析器很有用。它允许您设置线性、同步的解析器链来解决一些更复杂的问题。你可以有一个初始的 Lambda 函数/DDB 查找来获取帖子的数量(如果有人达到他们的限制,可能会失败),然后是第二个解析器来执行你的正常操作,然后甚至可能有三分之一可以发送电子邮件有人达到了极限。


推荐阅读