是否可以从一个Lambda函数发出HTTP请求,并在另一个Lambda函数中处理响应?

时间:2016-04-14 15:27:35

标签: amazon-web-services aws-lambda

AWS Lambda函数应该对事件做出快速响应。我想创建一个函数来触发对慢速API的快速请求,然后终止而不等待响应。稍后,当响应回来时,我想要一个不同的Lambda函数来处理响应。我知道这听起来有点疯狂,当你想到AWS必须做什么才能从一个Lambda函数挂起到一个开放连接然后将响应发送给另一个,但这似乎非常符合Lambda的精神被设计用于。

思路:

  • 将消息发送到表示请求的SQS队列。在EC2 / EB群集上有某种消息/ HTTP代理类型服务侦听队列并实际发出HTTP请求。如果需要,它会将响应对象放在另一个队列上,标记为标识相关请求。对于传统服务来说,这感觉很复杂。
  • 忍受它。 Lambda函数允许运行60秒,而我所做的这些API调用通常不会超过10秒。不知道LF会花费95%的运行时间等待响应的成本是多少,但“等待”并不是LF的用途。
  • 不要将Lambda用于与第三方API相互作用的任何不闪电的东西:(这是我的大多数项目目前所做的事情。

1 个答案:

答案 0 :(得分:1)

这取决于此lambda每月执行多少次调用,以及为这些lambda分配多少内存。 lambda的新超时是5分钟,应该(希望:p)足以让API响应。我认为你应该让lambda处理所有这些问题,而不是让工作流程复杂化。 Lambda定价通常非常便宜。

例如:一个lambda执行100万次,在10秒内分配128 MB将花费大约20美元 - 这不考虑潜在的免费等级。