无服务器部署的lambda不调用回调。

时间:2018-03-30 09:16:22

标签: aws-lambda serverless-framework aws-cognito

我对无服务器很新,我遇到了一个奇怪的情况。我创建了一个lambda函数,列出了cognito用户池中的用户。我使用cognitoidentityserviceprovider.listUsers从用户池中获取用户列表。

我尝试使用无服务器框架创建lambda函数。一切正常,但listUsers的回调从未被触发。云监视中没有错误日志,在超时之前没有任何反应。我厌倦了直接从lambda控制台创建测试函数并在那里使用相同的代码,测试函数完全正常。我从测试函数中获取用户列表。

有谁能请让我知道这里发生了什么。如果您想了解更多信息,请告诉我们。我很乐意解决这个问题。我不想有两个介质来处理我目前正在使用的lambda函数(无服务器框架以及lambda控制台)。

1 个答案:

答案 0 :(得分:0)

这是因为您尝试从Lambda内部调用异步方法。

当AWS调用您的Lambda时,它只调用部署lambda时指定的处理程序方法。当该方法返回时,AWS会将运行代码的容器置于休眠状态,直到收到另一个请求。

在这种情况下,发生的事情可能是您调用了Cognito list用户调用的异步,并且您的main方法在收到回调响应之前已完成。然后AWS将容器置于睡眠状态,这会导致与cognito的连接中断,因此您从未收到响应。

除非用户呼叫的认知列表具有同步变体,否则您必须弄清楚如何制作呼叫阻止并等待代码中的响应,或者找到另一种方式来调用cognito。

由于cognito是一项AWS服务,我很确定您只是使用错误的SDK或API调用变体与lambda内部的cognito进行交互。