Amazon web services 如何设置Lambda/Step函数,使I';m在为API响应空闲时未计费?

Amazon web services 如何设置Lambda/Step函数,使I';m在为API响应空闲时未计费?,amazon-web-services,aws-lambda,aws-step-functions,Amazon Web Services,Aws Lambda,Aws Step Functions,假设我有一个顶级AWS Lambda函数,为所有客户机调用order\u,为单个客户机调用另一个Lambda函数order\u order\u for_all\u client收集1000个客户端,并为每个客户端调用order\u for_single\u client order\u for\u single\u client具有以下工作流程: 进行外部API调用,等待响应 基于#1,进行另一个外部API调用,等待响应 基于#2,进行另一个外部API调用,等待响应 在这个函数中,90%的时间用

假设我有一个顶级AWS Lambda函数,为所有客户机调用
order\u,为单个客户机调用另一个Lambda函数
order\u

order\u for_all\u client
收集1000个客户端,并为每个客户端调用
order\u for_single\u client

order\u for\u single\u client
具有以下工作流程:

  • 进行外部API调用,等待响应
  • 基于#1,进行另一个外部API调用,等待响应
  • 基于#2,进行另一个外部API调用,等待响应
  • 在这个函数中,90%的时间用于等待API调用返回响应。另外10%用于执行实际处理/计算


    是否有一种方法可以设计Lambda/Step函数,使其能够触发API调用,关闭当前Lambda函数,然后在API调用返回后重新启动Lambda函数?这样做,我只会为实际的计算时间付费,而不会为闲置等待API调用返回的时间付费。

    不,这是不可能的。没有任何东西可以“接收”API响应

    一个更简洁的“异步”解决方案是请求外部服务向Amazon SQS队列发送响应,该队列随后可能触发AWS Lambda函数。但是,这需要更改外部服务处理API请求的方式

    或者,外部服务可以提供单独的API调用来“提交”请求,然后“检索”请求的结果。Lambda函数可以“提交”请求。然后,另一个进程将轮询服务,以检索任何已完成作业的结果


    如果每秒有许多对外部服务的请求,可能值得移动到Amazon EC2并并行发出请求。这将在等待响应时更好地利用资源。

    您可以控制外部API吗?API响应需要多长时间?如果您可以控制外部API,那么可能有一种方法。我们触发并忘记外部API,当响应就绪时,外部API可以使用令牌和响应字符串恢复步骤函数。您是否为所有客户端订购了所有API请求的队列?