我想要排除在 Amazon Cognito 中使用用户迁移 AWS Lambda 触发器时遇到的错误。
解决方法
以下是您在使用用户迁移 Lambda 触发器时可能遇到的常见错误。
“调用 initiateAuth 操作时出现错误 (InvalidParameterException): 没有为此客户端启用 USER_PASSWORD_AUTH 流程”
当 Amazon Cognito 用户群体的应用程序客户端未配置为使用 USER_PASSWORD_AUTH 或 ADMIN_USER_PASSWORD_AUTH 流程时,会出现此错误。要排除此错误,在添加用户迁移 Lambda 触发器之前,请在您的应用程序客户端中启用 USER_PASSWORD_AUTH 或 ADMIN_USER_PASSWORD_AUTH 流程。
要启用 USER_PASSWORD_AUTH 或 ADMIN_USER_PASSWORD_AUTH 流程,请在您的应用程序客户端中选择该身份验证流程。使用这些流程代替默认 USER_SRP_AUTH 流程。Amazon Cognito 会向您的 Lambda 函数发送密码,以验证您在其他目录中的用户身份验证。
“调用 InitiateAuth 操作时出现错误 (UserNotFoundException): 在应用程序客户端 <example_client_id> 中迁移用户时出现异常”
当设置为用户迁移 Lambda 触发器的 Lambda 函数没有正确配置的授权策略时,会发生此错误。在这种情况下,该策略不允许 Amazon Cognito 服务账户主体 cognito-idp.amazonaws.com 调用 Lambda 函数。有关详细信息,请参阅为 Lambda 使用基于资源的策略。
如果未将 Lambda 函数设置为 Amazon Cognito 用户群体的用户迁移 Lambda 触发器,也会发生此错误。要排除此错误,请确保将您的 Lambda 函数配置为用户群体的用户迁移 Lambda 触发器。
“调用 InitiateAuth 操作时出现错误 (UserNotFoundException): 迁移期间出错:finalUserStatus 无效”
当您将 finalUserStatus 设置为 CONFIRMED 以外的任何值时,会出现此错误。要排除此错误,请将 inalUserStatus 更改为 CONFIRMED,这样用户在登录前无需执行其他操作。
当 Lambda 函数返回给 Amazon Cognito 的参数值不是预期值时,会出现 messageAction 无效或 desiredDeliveryMediums 无效错误。要排除这些错误,请将参数更改为预期值。有关请求和响应参数的信息,请参阅迁移用户 Lambda 触发器参数。
“调用 InitiateAuth 操作时出现错误 (UserNotFoundException): 属性不符合架构:<example_attribute>: 架构中不存在属性”
当 Lambda 函数响应中包含的属性不是您的 Amazon Cognito 用户群体中的属性时,会发生此错误。要排除此错误,请确保返回的属性在您的用户群体架构中存在。
“用户迁移期间出现异常”或“UserMigration 失败,出现错误: <example error message>”
这些错误出现在托管 UI 页面上,发生的原因可能是上述任一原因。
由于这些错误消息是通用的,因此可能很难确定错误的具体原因。关于在迁移用户时托管 UI 页面上出现的错误,如需更多详细信息,请运行以下 AWS 命令行界面 (AWS CLI) 命令:
$ aws cognito-idp initiate-auth --client-id <your-client-id>
--auth-flow USER_PASSWORD_AUTH --auth-parameters "USERNAME=<username>,PASSWORD=<password>"
**注意:**替换 <your-client-id> 为您的客户端 ID。替换 <username> 为您的用户名。替换 <password> 为您的密码。
注意: 如果您在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
该命令调用用户迁移 Lambda 函数。返回的任何错误都包括详细消息。
相关信息
使用用户迁移 Lambda 触发器将用户导入用户群体
迁移用户 Lambda 触发器
示例: 使用现有密码迁移用户