是否可以从一个 Lambda 函数发出 HTTP 请求,并在另一个函数中处理响应?
Is it possible to make an HTTP request from one Lambda function, and handle the response in another?
AWS Lambda 函数应该能够快速响应事件。我想创建一个函数来触发对慢速 API 的快速请求,然后在不等待响应的情况下终止。稍后,当响应返回时,我想要一个不同的 Lambda 函数来处理响应。我知道这听起来有点疯狂,当你想到 AWS 必须做些什么才能挂起来自一个 Lambda 函数的开放连接,然后将响应发送到另一个函数时,但这似乎非常符合 Lambda 的精神专为使用而设计。
想法:
- 将表示要发出的请求的消息发送到 SQS 队列。在 EC2/EB 集群上使用某种 message/HTTP 代理类型服务来监听队列并实际发出 HTTP 请求。它会将响应对象放在另一个队列中,并在必要时进行标记以标识关联的请求。对于传统服务来说微不足道的事情,这感觉很复杂。
- 忍受它。 Lambda 函数允许 运行 60 秒,而我进行的这些 API 调用通常不会超过 10 秒。不确定让 LF 将 95% 的 运行ning 时间花在等待响应上会花费多少成本,但 "waiting" 不是 LF 的目的。
- 不要将 Lambda 用于任何与第 3 方交互的东西 APIs 不是闪电般快速:( 不过,这就是我最近的大多数项目所做的。
这取决于此 lambda 每月执行多少次调用,以及您为这些 lambda 分配了多少内存。 lambda 的新超时是 5 分钟,这应该(希望 :p)足以让 API 响应。我认为您应该让 lambda 处理所有这些,以免使工作流程过于复杂。 Lambda 定价一般 真的很便宜。
例如:在 10 秒内分配 128 MB 的 lambda 执行 100 万次将花费大约 20 美元 - 这没有考虑潜在的免费套餐。
AWS Lambda 函数应该能够快速响应事件。我想创建一个函数来触发对慢速 API 的快速请求,然后在不等待响应的情况下终止。稍后,当响应返回时,我想要一个不同的 Lambda 函数来处理响应。我知道这听起来有点疯狂,当你想到 AWS 必须做些什么才能挂起来自一个 Lambda 函数的开放连接,然后将响应发送到另一个函数时,但这似乎非常符合 Lambda 的精神专为使用而设计。
想法:
- 将表示要发出的请求的消息发送到 SQS 队列。在 EC2/EB 集群上使用某种 message/HTTP 代理类型服务来监听队列并实际发出 HTTP 请求。它会将响应对象放在另一个队列中,并在必要时进行标记以标识关联的请求。对于传统服务来说微不足道的事情,这感觉很复杂。
- 忍受它。 Lambda 函数允许 运行 60 秒,而我进行的这些 API 调用通常不会超过 10 秒。不确定让 LF 将 95% 的 运行ning 时间花在等待响应上会花费多少成本,但 "waiting" 不是 LF 的目的。
- 不要将 Lambda 用于任何与第 3 方交互的东西 APIs 不是闪电般快速:( 不过,这就是我最近的大多数项目所做的。
这取决于此 lambda 每月执行多少次调用,以及您为这些 lambda 分配了多少内存。 lambda 的新超时是 5 分钟,这应该(希望 :p)足以让 API 响应。我认为您应该让 lambda 处理所有这些,以免使工作流程过于复杂。 Lambda 定价一般 真的很便宜。
例如:在 10 秒内分配 128 MB 的 lambda 执行 100 万次将花费大约 20 美元 - 这没有考虑潜在的免费套餐。