Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Lambda 触发器自定义用户池工作流

您可以创建一个 AWS Lambda 函数,然后在用户池操作(如用户注册、确认和登录(身份验证))期间使用 Lambda 触发器触发该函数。您可以添加身份验证质询、迁移用户和自定义验证消息。

添加用户池 Lambda 触发器

使用控制台添加用户池 Lambda 触发器

  1. 使用 Lambda 控制台创建 Lambda 函数。有关 Lambda 函数的更多信息,请参阅 AWS Lambda Developer Guide

  2. 导航到 Amazon Cognito 控制台,选择管理用户池

  3. 从列表中选择现有用户池,或创建用户池

  4. 在您的用户池中,从导航栏中选择触发器选项卡。

  5. 选择 Lambda 触发器(如注册前身份验证前),然后从 Lambda 函数下拉列表中选择您的 Lambda 函数

  6. 选择 Save changes

  7. 您可以在 Lambda 控制台中使用 CloudWatch 记录您的 Lambda 函数。有关更多信息,请参阅访问适用于 Lambda 的 CloudWatch Logs

重要

Amazon Cognito 将同步调用 Lambda 函数。被调用时,您的 Lambda 函数必须在 5 秒内响应。如果它没有及时响应,Amazon Cognito 将重新尝试调用。3 次尝试失败后,该函数将超时。此 5 秒超时值无法更改。有关更多信息,请参阅 Lambda 编程模型

用户池 Lambda 触发器事件

Amazon Cognito 将事件信息传递到您的 Lambda 函数,该函数将相同事件对象随同响应中的任何更改返回给 Amazon Cognito。此事件显示了 Lambda 触发器通用参数:

JSON
JSON
{ "version": number, "triggerSource": "string", "region": AWSRegion, "userPoolId": "string", "userName": "string", "callerContext": { "awsSdkVersion": "string", "clientId": "string" }, "request": { "userAttributes": { "string": "string", .... } }, "response": {} }

用户池 Lambda 触发器通用参数

版本

您的 Lambda 函数的版本号。

triggerSource

触发 Lambda 函数的事件的名称。有关每个 triggerSource 的说明,请参阅用户池 Lambda 触发器源

region

AWS 区域,作为 AWSRegion 实例。

userPoolId

用户池的用户池 ID。

使用者名稱

当前用户的用户名。

callerContext

调用方上下文,由以下内容组成:

awsSdkVersion

AWS 开发工具包版本号。

clientId

与用户池关联的客户端的 ID。

请求

来自 Amazon Cognito 服务的请求。此请求必须包括:

userAttributes

一个或多个用户属性名称/值对。每个配对的形式均为 "名称": ""。

响应

来自 Lambda 触发器的响应。响应中的返回参数取决于触发事件。

用户池 Lambda 触发器源

本节介绍每个 Amazon Cognito Lambda triggerSource 参数及其触发事件。

注册、确认和登录 (身份验证) 触发器

触发器 triggerSource 值 触发事件
注册前 PreSignUp_SignUp 注册前。
注册前 PreSignUp_AdminCreateUser 在管理员创建新用户时做好注册准备。
确认后 PostConfirmation_ConfirmSignUp 注册后确认。
确认后 PostConfirmation_ConfirmForgotPassword 忘记密码后确认。
身份验证前 PreAuthentication_Authentication 身份验证前。
身份验证后 PostAuthentication_Authentication 身份验证后。

自定义身份验证质询触发器

触发器 triggerSource 值 触发事件
定义身份验证质询 DefineAuthChallenge_Authentication 定义身份验证质询。
创建身份验证质询 CreateAuthChallenge_Authentication 创建身份验证质询。
验证身份验证质询 VerifyAuthChallengeResponse_Authentication 验证身份验证质询响应。

令牌生成前触发器

触发器 triggerSource 值 触发事件
令牌生成前 TokenGeneration_HostedAuth 通过 Amazon Cognito 托管 UI 登录页进行身份验证时调用。
令牌生成前 TokenGeneration_Authentication 用户身份验证流完成之后调用。
令牌生成前 TokenGeneration_NewPasswordChallenge 管理员创建用户之后调用。当用户必须更改临时密码时调用此流。
令牌生成前 TokenGeneration_AuthenticateDevice 用户设备身份验证结束时调用。
令牌生成前 TokenGeneration_RefreshTokens 用户尝试刷新身份和令牌时调用。

迁移用户触发器

Trigger triggerSource 值 触发事件
用户迁移 UserMigration_Authentication 用户登录时进行迁移。
用户迁移 UserMigration_ForgotPassword 忘记密码流程中的用户迁移。

自定义消息触发器

触发器 triggerSource 值 触发事件
自定义消息 CustomMessage_SignUp 自定义消息 – 在注册后发送确认代码。
自定义消息 CustomMessage_AdminCreateUser 自定义消息 – 向新用户发送临时密码。
自定义消息 CustomMessage_ResendCode 自定义消息 – 向现有用户重新发送确认代码。
自定义消息 CustomMessage_ForgotPassword 自定义消息 – 针对“忘记密码”请求发送确认代码。
自定义消息 CustomMessage_UpdateUserAttribute 自定义消息 – 当用户的电子邮件或电话号码发生更改时,此触发器自动向用户发送验证码。不可用于其他属性。
自定义消息 CustomMessage_VerifyUserAttribute 自定义消息 – 当用户针对新的电子邮件或电话号码手动请求验证码时,此触发器向用户发送验证码。
自定义消息 CustomMessage_Authentication 自定义消息 – 在身份验证过程中发送 MFA 代码。