aws-lambda - Appsync 在响应后调用 lambda?
问题描述
示例问题:
用户可以在我们的网站上发布他们自己的文章。但是,每个用户只能发布 5 篇文章,当他们发布第 5 篇文章时,我们希望向他们发送一封电子邮件。
仅使用左轮手枪,是否可以按时返回突变响应,然后延迟/异步调用 lambda 函数向用户发送电子邮件?
解决方案
是的,这应该很有可能。这在一定程度上取决于您要使用哪种解析器。如果您使用的是 Lambda 数据源:
- 正如您所提到的,Lambda 调用可以是异步的,因此您可以在 Lambda 解析器中执行一个并看到最小的额外开销。
- 您可以使用 Lambda 事件溯源。例如,今年早些时候,Lambda 推出了基于 SQS 事件的 Lambda 调用。这意味着,您的 Lambda 解析器会将带有某些事件上下文的消息放入 SQS 队列(例如帐户信息、电子邮件地址等),然后您将拥有一个监听该队列的 Lambda。它会自动进行轮询,因此它会立即调用并解析该消息,然后您就可以从中发送电子邮件。
- 根据个人偏好/应用程序需求,您可以找到其他有用的 Lambda 事件源,所有这些都在docs中可见。具体来说,您可能会发现 SNS 和/或 Kinesis 是可行的选择。从概念上讲,它们是相同的——您的解析器将消息推送到某个 AWS 服务中,并且将自动调用事件驱动的 Lambda。
如果您使用的是 DynamoDB 数据源:
- 您可以在您的表上设置 DynamoDB 流并连接一个事件驱动的 Lambda 来监听该流。
无论如何,您可能会发现管道解析器很有用。它允许您设置线性、同步的解析器链来解决一些更复杂的问题。你可以有一个初始的 Lambda 函数/DDB 查找来获取帖子的数量(如果有人达到他们的限制,可能会失败),然后是第二个解析器来执行你的正常操作,然后甚至可能有三分之一可以发送电子邮件有人达到了极限。
推荐阅读
- asp.net-core - 如何在asp.net核心实体框架核心数据库优先方法中使用身份?
- apache-camel - Camel 2 中的 JCachePolicy
- java - 如何从 github 库构建 gradle jar
- google-apps-script - 如何以相同的顺序在 Googlesheet 中复制新数据
- python - 如何自动更新 pyinstaller 生成的 .exe 文件
- mongodb - Mongo Aggregate $project 变量作为字段名
- django - Django - 提交表单时无法获取模型选择 FK
- reactjs - 怎样才能将排列的元素一一取出来?在 Reactjs 中的 div 内
- c++ - 不能 emplace_back 到同时也是函数的向量
- react-native - 我从服务器获得了以下数据,并在名称中显示了重复的数据。我不想要重复的数据。你能帮忙解决这个问题吗