【发布时间】:2018-05-30 17:48:18
【问题描述】:
我的设计是api会触发第一个lambda函数,这个函数然后发送sns并返回,sns触发第二个lambda函数。现在我希望 api 从第二个 lambda 函数获得响应。
这是流程: api获取用户的请求然后触发第一个lambda函数,第一个lambda函数创建一个sns并返回。现在 api 处于 lambda 函数阶段,仍在等待第二个 lambda 的响应。 sns 触发第二个 lambda 函数;第二个 lambda 函数返回一些结果并将其传递给 api。 api 获取响应并将其发送回用户。
我知道有一种方法可以使用 sdk 来获取第二个 lambda 函数并设置事件类型以使其异步。但是这里我想用sns,可以吗?
需要一些帮助/建议。提前致谢!
【问题讨论】:
-
恐怕这个设计有一个严重的缺陷。 SNS invokes Lambda asynchronously 并且没有捕获任何结果——它被丢弃了。如果您需要 Lambda 函数的结果,则需要同步调用它,以便调用者阻塞等待响应。
-
正如@Michael-sqlbot 已经提到的,SNS 将无法获得调用的结果,因此您的第一个 Lambda 将无法知道第二个 Lambda 的结果。
-
另外,SNS 可能会多次调用您的第二个 Lambda。
标签: node.js amazon-web-services lambda amazon-sns