身份验证后 Lambda 触发器 - Amazon Cognito
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

身份验证后 Lambda 触发器

Amazon Cognito 在登录用户后调用此触发器,让您能够在身份验证后添加自定义逻辑。

身份验证后 Lambda 流程

客户端身份验证流程


                    身份验证后 Lambda 触发器 – 客户端流程

服务器身份验证流程


                    身份验证后 Lambda 触发器 – 服务器流程

有关更多信息,请参阅用户池身份验证流程

身份验证后 Lambda 触发器参数

这些是此 Lambda 函数除常用参数以外还必需的参数。

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "newDeviceUsed": boolean, "clientMetadata": { "string": "string", . . . } }, "response": {} }

身份验证后请求参数

newDeviceUsed

此标记指示用户是否已在新设备上登录。仅在用户池的记住的设备值设置为 AlwaysUser Opt-In 时设置它。

userAttributes

表示用户属性的一个或多个名称/值对。

clientMetadata

一个或多个键值对,您可以将其作为自定义输入内容提供给 Lambda 函数,该函数是为身份验证后触发器指定的。您可以使用 AdminRespondToAuthChallengeRespondToAuthChallenge API 操作中的 ClientMetadata 参数将此数据传递给 Lambda 函数。

身份验证后响应参数

预计响应中没有其他返回信息。

身份验证教程

身份验证后 Lambda 函数在 Amazon Cognito 登录新用户之后触发。请参阅这些适用于 JavaScript、Android 和 iOS 的登录教程。

平台 教程
JavaScript 身份开发工具包 通过 JavaScript 登录用户
Android 身份开发工具包 通过 Android 登录用户
iOS 身份开发工具包 通过 iOS 登录用户

身份验证后示例

此身份验证后示例 Lambda 函数将成功登录数据发送到 CloudWatch Logs。

Node.js
exports.handler = (event, context, callback) => { // Send post authentication data to Cloudwatch logs console.log ("Authentication successful"); console.log ("Trigger function =", event.triggerSource); console.log ("User pool = ", event.userPoolId); console.log ("App client ID = ", event.callerContext.clientId); console.log ("User ID = ", event.userName); // Return to Amazon Cognito callback(null, event); };
Python
from __future__ import print_function def lambda_handler(event, context): # Send post authentication data to Cloudwatch logs print ("Authentication successful") print ("Trigger function =", event['triggerSource']) print ("User pool = ", event['userPoolId']) print ("App client ID = ", event['callerContext']['clientId']) print ("User ID = ", event['userName']) # Return to Amazon Cognito return event

Amazon Cognito 将事件信息传递给 Lambda 函数。然后该函数将同一事件对象返回到 Amazon Cognito,同时在响应中返回任何更改。在 Lambda 控制台中,您可以使用与 Lambda 触发器相关的数据设置测试事件。下面是此代码示例的测试事件:

JSON
{ "triggerSource": "testTrigger", "userPoolId": "testPool", "userName": "testName", "callerContext": { "clientId": "12345" }, "response": {} }