本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
迁移用户 Lambda 触发器
如果用户在使用密码登录时,或在使用忘记密码流程时未在用户池中,Amazon Cognito 会调用此触发器。Lambda 函数成功返回后,Amazon Cognito 将在用户池中创建用户。有关利用用户迁移 Lambda 触发器进行身份验证流程的详细信息,请参阅利用用户迁移 Lambda 触发器将用户导入用户池。
您可以使用此 Lambda 触发器,在用户登录时,或在忘记密码流程中,将他们从现有用户目录迁移到 Amazon Cognito 用户池。
迁移用户 Lambda 触发器源
triggerSource 值 | 触发事件 |
---|---|
UserMigration_Authentication |
用户登录时进行迁移。 |
UserMigration_ForgotPassword |
在忘记密码流程中迁移用户。 |
迁移用户 Lambda 触发器参数
这些是此 Lambda 函数除常用参数以外还必需的参数。
迁移用户请求参数
- userName
-
用户输入的用户名。
- 密码
-
由用户输入的登录密码。不是在忘记密码流程中设置的密码。
- validationData
-
在用户的登录请求中包含验证数据的一个或多个键/值对。您可以使用 InitiateAuth 和 AdminInitiateAuth API 操作中的 ClientMetadata 参数将此数据传递给 Lambda 函数。
- clientMetadata
-
一个或多个键值对,您可以将其作为自定义输入内容提供给 Lambda 函数,该函数是为迁移用户触发器指定的。您可以使用 AdminRespondToAuthChallenge 和 ForgotPassword API 操作中的 ClientMetadata 参数将此数据传递给 Lambda 函数。
迁移用户响应参数
- userAttributes
-
此字段为必填字段。
它必须包含一个或多个名称-值对,表示要存储在用户池中的用户配置文件内的用户属性。您可以同时包括标准的和自定义的用户属性。自定义属性需要使用
custom:
前缀,以便与标准属性区分开来。有关更多信息,请参阅自定义属性。注意 为了便于用户在忘记密码流程中重置密码,用户必须拥有经过验证的电子邮件或电话号码。Amazon Cognito 将包含重置密码代码的消息发送到 .csv 文件中指定的电子邮件或电话号码。
属性 要求 创建用户池时标记为必需的所有属性 如果迁移过程中缺少任何必需的属性,将使用默认值。 username
如果您已使用电子邮件和/或 preferred_username 别名配置用户池 (登录用户名除外),而用户输入电子邮件或电话号码进行登录,此属性必需。
否则将用作可选用户名,替代用户输入的用户名。
注意 在用户池中,用户名必须是唯一的。
- finalUserStatus
-
在登录期间,此属性可设置为
CONFIRMED
或不设置,以自动确认您的用户,并允许他们使用原来的密码登录。对于用户而言,这是最简单的体验。如果此属性设置为 RESET_REQUIRED,用户必须在迁移后 (即登录时) 立即更改密码,而您的客户端应用程序需要在身份验证流程期间处理
PasswordResetRequiredException
。注意 新用户池的密码策略不应强于现有用户目录的密码策略。
- messageAction
-
此属性可设置为 "SUPPRESS",以隐藏通常由 Amazon Cognito 发送给新用户的欢迎消息。如果未返回此属性,将不发送欢迎消息。
- desiredDeliveryMediums
-
此属性设置为 "EMAIL" 可通过电子邮件发送欢迎消息;设置为 "SMS" 可通过 SMS 发送欢迎消息。如果未返回此属性,将通过 SMS 发送欢迎消息。
- forceAliasCreation
-
如果该参数设置为 "true",并且在 UserAttributes 参数中指定的电话号码或电子邮件地址已作为其他用户的别名存在,则 API 调用会将该别名从以前的用户迁移到新创建的用户。以前的用户将无法再使用该别名登录。
如果此属性设置为 "false" 且别名存在,将不会迁移用户,并且一个错误将返回客户端应用程序。
如果未返回此属性,则认为是 "false"。
示例:使用现有密码迁移用户
此示例 Lambda 函数迁移已有密码的用户,并隐藏 Amazon Cognito 发送的欢迎消息。