回调后保证aws lambda执行吗?

beb*_*bbi 13 callback amazon-web-services node.js aws-lambda aws-api-gateway

我通过API GW调用的node4 lambda函数生成一系列缓慢的API调用.为了不让用户等到一切都完成,我打算让我的代码看起来像这样:

function(event, context, callback) {
  ...
  // Return users API GW call now
  callback(null, data);
  // Do the heavy lifting afterwards.
  longApiCall().then(otherLongApiCalls)
}
Run Code Online (Sandbox Code Playgroud)

但现在我在AWS文档中读到:"回调将等到Node.js运行时事件循环为空,然后冻结进程并将结果返回给调用者"

这是否意味着API GW在longApiCalls完成之前或之后返回响应数据?

如果之后,是否有建议的方法如何在一切结束之前"早退"?

Mar*_*k B 23

在当前配置中,API网关将等待Lambda函数执行完毕后再发送响应.你的选择是:

  1. 将API Gateway端点的集成类型更改为AWS Service,并让API Gateway异步调用Lambda函数.这在此处记录.
  2. 让API Gateway调用的Lambda函数不做任何事情,只是异步调用另一个Lambda函数然后返回.
  3. 拥有API网关或API网关调用的Lambda函数,向SNS主题发送消息.然后让SNS主题触发处理长API调用的Lambda函数.这会使您的微服务稍微分离.
  4. 拥有API网关或API网关调用的Lambda函数会触发AWS步骤函数,该函数被配置为通过一个或多个Lambda函数处理长API调用.如果长API调用存在运行单个Lambda函数的执行时间限制为5分钟的风险,我建议使用此方法.