2017-02-12 67 views
2

目前我已经设置了一个由api网关端点触发的lambda函数。目标是通过形成响应并首先触发回调来保持低响应时间,然后继续与sns交互以将工作传递给其他lambda函数。但是,我在运行火焰眼镜对着端点时发现了一些奇怪的现象。主要是响应时间似乎不断增加,此外有502和504响应代码返回,但没有500响应代码(如果我理解正确,表明调用调节,因为429响应映射到api网关500)。如果我删除了异步操作,我会看到合理的响应时间并且没有错误。为什么这是观察到的行为,当实际触发响应时,或者在发送响应之前lambda是否等待事件队列清空时,项目在nodejs事件循环中排队的顺序不起作用?如果是后者,那么异步交互中的错误会成为响应的原因吗?lambda + api网关何时实际向客户端发送响应?

回答

4

确实在哪些项目上取得成功的事件的NodeJS循环排队不 效果时,反应在实际触发或不拉姆达只是 等待事件队列发送响应之前,空出的顺序?

默认情况下,在退出并触发API网关发送响应之前,NodeJS 4.2 Lambda函数将等待NodeJS事件循环为空。当您调用callback函数时,只需通知Lambda容器即可在事件循环清除后退出。在存在Lambda函数之前,API网关不会返回响应。只要调用callback函数,就可以设置一个选项来触发Lambda函数退出,但随后在后台运行的其他内容将被终止。

如果是后者,那么将在异步交互的错误是 原因502个& 504响应的?

如果“异步交互”你的意思是你正在调用到SNS,则是如果这些失败,你不处理错误正确可能导致整个调用返回一个错误。如果您收到502错误,您需要检查您的Lambda function's logs in CloudWatch Logs以查看错误是什么。您也可以在这种情况下提供一些有用的信息enable CloudWatch Logs for API Gateway

+0

你有没有找到一种方法来触发ApiGateway,同时保持lambda的拆卸代码运行? –

相关问题