lambda + api网关什么时候实际向客户端发送响应?

Age*_*dit 2 amazon-web-services node.js aws-lambda aws-api-gateway

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

Mar*_*k B 5

在实际触发响应时,nodejs事件循环中项目排队的顺序是否有效,或者lambda只是等待事件队列在发送响应之前清空?

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

如果是后者,则异步交互中的错误会导致502和504响应吗?

如果通过"异步交互"表示您正在调用SNS,那么如果这些调用失败并且您没有正确处理错误,则可能导致整个调用返回错误.如果您收到502错误,则需要在CloudWatch Logs中检查Lambda函数的日志以查看错误.您还可以为API网关启用CloudWatch Logs,在这种情况下可能会提供一些有用的信息.

  • 您是否找到了触发ApiGateway的方法,同时保持lambda的拆卸代码运行? (3认同)