Cognito迁移触发器运行成功,但返回错误。

0

【以下的问题经过翻译处理】 您好,我创建了一个迁移用户 Lambda 触发器 来自动注册来自登录后将 MySQL DB 放入 Cognito 池中。

我正在使用 Cognito 提供的托管 UI,并且触发器正确执行,它验证用户凭据并发回 context.succeed(event);,但我每次在 UI 中收到错误响应不正确的用户名或密码。并且用户未在 Cognito 池中正确创建。

在此处输入图片描述

此 Lambda 函数之前按预期工作,我能够成功迁移用户,但它突然开始失败。 它是这样的:

exports.handler = async (event, context, callback) => { 变种用户;

如果 (event.triggerSource == "UserMigration_Authentication") { // 使用现有用户目录服务对用户进行身份验证 user = await authenticateUser(event.userName, event.request.password);

如果(用户){ 事件.response.userAttributes = { “电子邮件”:user.email, “email_verified”:“真” }; event.response.finalUserStatus = "确认"; event.response.messageAction = "抑制"; 上下文成功(事件); } 别的 { // 将错误返回给 Amazon Cognito callback("密码无效"); } } else if (event.triggerSource == "UserMigration_ForgotPassword") { // 在现有用户目录服务中查找用户 user = await lookupUser(event.userName);

如果(用户){ 事件.response.userAttributes = { “电子邮件”:user.email, // 需要启用密码重置代码才能发送给用户 “email_verified”:“真” }; event.response.messageAction = "抑制"; 上下文成功(事件); } 别的 { // 将错误返回给 Amazon Cognito callback("未找到用户"); } } 别的 { // 将错误返回给 Amazon Cognito 回调(“无效的触发源”+ event.triggerSource); } };

这是用户成功通过身份验证时发回的事件示例:

{ 版本:'1', triggerSource: 'UserMigration_Authentication', 区域:'us-xxx-x', userPoolId: 'us-xxx-x_xxxXxXX', 用户名:'qa_tests+email@email.com', 来电上下文:{ awsSdkVersion: 'aws-sdk-未知-未知', clientId: '79vm3b2pogsddtl9udq5unrg' }, 请求:{密码:'密码!',validationData:null,userAttributes:null}, 回复: { 用户属性:{ 电子邮件:'qa_tests+email@email.com', email_verified: 'true' }, forceAliasCreation:空, enableSMSMFA:空, finalUserStatus: '已确认', messageAction: '抑制', desiredDeliveryMediums:空 } }

authenticateUser 是从 MySQL 中获取用户并验证凭据的函数

lookupUser 是从 MySQL 中获取用户的函数。

我无法弄清楚问题是什么,特别给出了错误响应“用户名或密码不正确”。当电子邮件和密码都正确时。

这个 Lambda 以前工作正常,最近才开始失败,我想不出原因,我能记得的唯一变化是在池中添加和删除客户端应用程序。

profile picture
专家
已提问 5 个月前30 查看次数
1 回答
0

【以下的回答经过翻译处理】 我深入挖掘并阅读了其他帖子后,找到了答案。gev1695用户提供了答案,基本上你需要增加lambda函数的默认内存。

我无法相信你们的文档是如此缺乏,更不用说能够正确调试问题的日志是多么糟糕。

随意关闭并标记为已解决。

profile picture
专家
已回答 5 个月前

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

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

回答问题的准则