【以下的问题经过翻译处理】 我目前正在验证一组用户通过迁移触发器迁移到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 调用,我不会期望触发器具有这样的限制。提前谢谢!