小编Alv*_*vin的帖子

回调后 AWS Lambda 继续执行

我正在使用 API Gateway + AWS Lambda 来处理 Slack API 请求。Slack 要求 Lambda 函数在 3 秒内响应 2XX,因此我需要快速响应,然后触发一些长时间运行的数据库操作。问题在于 AWS Lambda 要么 (1) 在将响应返回给 API Gateway 之前等待事件循环为空,要么 (2) 在callback调用函数时立即返回响应,但它随后立即冻结 Lambda 执行和长时间运行用它操作。

阅读这篇文章和其他文章,似乎通常的方法是使用 2 个 lambdas:一个立即发送 2XX 响应,然后触发另一个 lambda 来执行长时间运行的操作。这看起来不错,但我很好奇是否可以通过一次 lambda 调用来完成?

Mark B 的这个优秀答案中的选项 #1似乎表明使用 AWS 服务集成类型是可能的。但是按照这些说明设置 AWS 服务集成并将调用类型标头设置为“事件”,我仍然看到 Lambda 执行在callback运行后立即冻结。

我的小测试处理程序看起来像这样。我怀疑 Cloudwatch 在callback运行后没有记录,所以我让处理程序在 5 秒超时后向 ngrok 发出请求。我希望立即收到回调响应,然后 5 秒后,我通过 ngrok 收到一个 GET 请求。

const https = require('https');

exports.handler = function(event, …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services slack-api aws-lambda

5
推荐指数
1
解决办法
1209
查看次数