如何在AWS Cognito的Migrate User Lambda触发器中操作电子邮件地址

问题描述

我想在通过Amazon Cognito中的Migrate User Lambda Trigger用户一个用户池迁移到另一个用户池时修改电子邮件地址。

我正在运行用户迁移,而没有借助this article来操纵电子邮件地址。 lambda函数在Node.js 12.x环境中运行,并且源和目标用户池都使用电子邮件作为唯一的用户名属性进行配置:

user pool configuration

我的迁移用户响应参数如下:

{
  userAttributes: {
    email: '[email protected]',// --> the manipulated email address
    email_verified: 'true'
  },finalUserStatus: 'CONFIRMED',messageAction: 'SUPPRESS'
}

这会导致“由于用户名属性是电子邮件用户电子邮件应该为空或与用户名相同。” 尝试迁移(即登录)时出现错误消息。因此,我遵循了此消息,并添加了经过处理的电子邮件地址作为用户名

{
  userAttributes: {
    email: '[email protected]',email_verified: 'true',username: '[email protected]'
  },...
}

现在会出现“无效的用户名或缺少电子邮件/电话号码/首选用户名属性错误消息。根据{{​​3}},这是预期的行为:

如果选择电子邮件作为别名,则用户名不能与有效的电子邮件格式匹配。

由于我不知道如何解决此问题,因此给了我一个机会,并更改了用户池配置,以便使用用户名和电子邮件地址进行注册this documentation

由于上面提到的第一个响应参数现在导致用户名不能为电子邮件格式,因为用户池已配置为电子邮件别名。” 错误消息,我将用户名设置为源用户(通过

another user pool configuration

API检索):

{
  userAttributes: {
    email: '[email protected]',username: user.username
  },...
}

这再次导致出现“无效的用户名或缺少电子邮件/电话号码/ preferred_username属性错误消息。

我已经考虑过在另一个(随后的)Lambda触发器(例如AdminGetUser)中操作电子邮件,但是对于您在迁移用户Lambda触发器中完成电子邮件处理的帮助,我们深表感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)