当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 调用,我不会期望触发器具有这样的限制。提前谢谢!

1 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 2 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen