当Lambda执行时间过长时,Cognito迁移触发错误。

0

【以下的问题经过翻译处理】 我目前正在验证一组用户通过迁移触发器迁移到Cognito用户池的过程,触发器的Lambda函数实质上可以被简化为以下内容:def lambda_handler(event, context): response = requests.post(external_auth_api_url, json_with_user_and_pass) if response.status_code = 200: event["response"] = { "userAttributes": { "username": event["userName"], "email": event["userName"], "email_verified": "true" }, "finalUserStatus": "CONFIRMED", "messageAction": "SUPPRESS" } return event`根据文档,这个Lambda函数对旧系统进行外部rest调用并返回成功响应。我发现的问题是,如果Lambda函数时间过长,例如在通过ngrok现在我的平均执行时间大约为5秒左右,当我通过USERNAME_PASSWORD流调用initiateAuth时,Cognito失败并返回以下结果:`botocore.errorfactory.UserNotFoundException: An error occurred (UserNotFoundException) when calling the InitiateAuth operation: Exception migrating user in app client xxxxxxxxxxxx`我通过返回成功响应而不是进行外部REST调用来验证此问题,将Lambda函数运行时间降至毫秒级,这样我得到了所期望的令牌,并且用户成功迁移。我还使用以下Lambda函数进行了测试:`def lambda_handler(event, context): time.sleep(5) event["response"] = { "userAttributes": { "username": event["userName"], "email": event["userName"], "email_verified": "true" }, "finalUserStatus": "CONFIRMED", "messageAction": "SUPPRESS" } return event 这失败了,其错误响应与上述相同。如果有人可以提供建议,我不确定迁移触发器会等待多长时间,这在文档中没有记录。如果迁移触发器的意图是执行可能很慢的外部 REST 调用,我不会期望触发器具有这样的限制。提前谢谢!

profile picture
专家
已提问 2 年前70 查看次数
1 回答
0

【以下的回答经过翻译处理】 触发器的执行限制为5秒。很遗憾,官方的Cognito文档表示,这个超时时间无法配置:> 除了自定义发送程序Lambda触发器之外,Amazon Cognito会同步调用Lambda函数。当Amazon Cognito调用您的Lambda函数时,它必须在5秒内响应。如果没有,Amazon Cognito会重试调用。在三次不成功的尝试之后,函数会超时。您无法更改这个五秒超时值。有关更多信息,请参见Lambda编程模型。

profile picture
专家
已回答 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则