【发布时间】:2017-08-29 14:21:44
【问题描述】:
我第一次登录我的应用程序时,早上的第一件事,AWS Cognito 返回此错误:
{
"message": "arn:aws:lambda:us-east-1:XXXXXXXXXX:function:main-devryan-users_onCognitoLogin failed with error Socket timeout while invoking Lambda function.",
"code": "UnexpectedLambdaException",
"time": "2017-08-29T13:30:01.351Z",
"requestId": "1c04c982-8cbe-11e7-b9c9-a584e55a17f8",
"statusCode": 400,
"retryable": false,
"retryDelay": 96.636396268355
}
第二次,之后的每一天,一切都很好。
当我在 Cloudwatch 中检查我的 main-devryan-users_onCognitoLogin 函数的日志时,它在 2.3 秒内成功完成:
REPORT RequestId: 1f2d5a22-8cbe-11e7-ba74-5b21665a40c1 Duration: 2283.60 ms Billed Duration: 2300 ms Memory Size: 128 MB Max Memory Used: 51 MB
之后的每次,在一天的剩余时间里,我都没有看到这个错误。我的 Lambda 设置为 30 秒后超时,但我知道 Cognito needs a response in 5 seconds。
我的 lambda 函数只是更新数据库中的上次登录时间。第一次很慢,因为创建与我的 RDS DB 的连接大约需要 1.8 秒。我在这部分使用 Node JS 6 和 Sequelize 3。
我猜 Lambda 将我的应用程序加载到容器中需要 2.7 秒。
这里有人有解决方案吗?我被难住了。
【问题讨论】:
标签: amazon-web-services lambda sequelize.js amazon-cognito