在 AWS Cognito 用户池中删除用户时触发 Lambda 函数

Posted

技术标签:

【中文标题】在 AWS Cognito 用户池中删除用户时触发 Lambda 函数【英文标题】:Triggering a Lambda function upon deleting a user on AWS Cognito User Pool 【发布时间】:2018-11-25 08:15:47 【问题描述】:

AWS Cognito 用户池有一些预定义的事件来处理用户注册、确认等。完整列表是 here。

但是,删除用户并没有明显的触发因素。

那么,当用户从 Cognito 用户池中删除时(当然,使用用户名和/或电子邮件地址等参数),有什么方法可以触发 Lambda 函数?

【问题讨论】:

我没有想到一个开箱即用的解决方案。作为一种解决方法,您能否更新应用程序代码以在应用程序调用“DeleteUser”[1] 或“AdminDeleteUser”[2] API 时触发 lambda 函数? [1]docs.aws.amazon.com/cognito-user-identity-pools/latest/…,[2]docs.aws.amazon.com/cognito-user-identity-pools/latest/… 好吧,对于我的用例,我不会从我的代码中调用 lambda 函数。如果我必须这样做,我还需要一个 API 网关等,只是针对不那么频繁的单个案例。感谢您的建议,但现在对我来说这太贵了,而且是意大利面。 尝试挖掘 CloudTrail 以查看这些事件是否可以用作 CloudWatch 事件触发器。不幸的是,DeleteUserAdminDeleteUser 事件似乎没有发送到 cloudtrail:docs.aws.amazon.com/cognito/latest/developerguide/… 但是,如果您的应用正在记录到 CloudWatch,您也许可以插入自己的事件进行触发。 【参考方案1】:

如果您使用的是“Amazon Cognito Sync”:

当数据集同步时,Amazon Cognito 会引发 Sync Trigger 事件。当用户被更新或删除时,您可以使用同步触发器事件来执行操作。 请查看以下官方文档以获取更多信息和步骤。

参考:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-events.html

应用用户更新的记录将“op”字段设置为“replace”,删除的记录将“op”字段设置为“remove”。

根据参考文档中的上述点 op 字段可以帮助您识别操作,因此如果在 op 中“删除”值,那么您可以根据您的业务逻辑要求执行您的操作。

如果您不使用“Amazon Cognito Sync”:

    使用Post Confirmation Lambda Trigger在 DynamoDB 表“user”中创建用户记录。 根据 DynamoDB 表“user”构建您自己的用户列表。 使用 lambda 函数和 aws api 网关构建您自己的用户删除 api。 您的 lambda 函数应处理从 cognito 删除用户以及您要执行的业务逻辑。

【讨论】:

以上是关于在 AWS Cognito 用户池中删除用户时触发 Lambda 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Cognito 用户池中为特定用户编辑用户属性?

在 cognito 用户池中添加 lambda 触发器时出现 404 错误

检查用户 phone_number 是不是已存在于 aws cognito 用户池中

使用 C# 和 .NET Core 在 AWS Cognito 用户池中进行用户管理

我们可以在 AWS Cognito 的单个用户池中拥有多个角色吗?

同一 AWS Cognito 用户池中的多个应用程序对于同一用户来说 cognitoID 是不是相同?