如何删除在UserPool中创建的Cognito用户?

问题描述 投票:1回答:2

我已经使用HTML创建了一个登录应用程序,我正在其中使用Cognito用户池和身份池提供对AWS服务的访问,我希望该用户只能访问这些服务30分钟,并且在该用户应被自动删除并全部旋转之后他的资源应删除。

我有一些API AdminDeleteUser可以删除该用户,但是如何自动计算该用户的30Min以及删除资源。

amazon-web-services amazon-cognito
2个回答
0
投票
有几种方法可以完成此操作。一种方法是:

    创建DynamoDB表并在表中启用流。
  1. 创建Lambda函数来处理DynamoDB流事件,特别是从表中删除的项目。您将查找eventName,即REMOVE,并且userIdentity属性的principalIddynamodb.amazonaws.com。 Lambda找到具有上述条件的事件后,就可以继续删除DynamoDB项中列出的所有资源。
  2. 在创建用户的函数中添加了一个函数,用于将一项添加到上面创建的DynamoDB表中,并使其包含要删除的用户的Cognito用户名。将该项目的TTL设置为30分钟。
  3. [在创建资源的函数中,添加一个函数,以使用用户创建的ARN资源来更新用户DynamoDB项。
  • 现在,您可以跟踪用户创建的所有资源,并自动删除帐户和资源。

    值得注意的是,以上是基本模式,存在陷阱和低效之处。例如,一个RDS数据库的删除通常要比您的Cognito用户花费的时间长得多,这几乎是即时的。您不想在等待删除这些资源的同时保持Lambda的运行状态;这是低效且昂贵的,因此您可能想找到一种解决方案,也许可以使用Step Functions或SNS来删除允许用户以有效方式启动的资源。


  • 0
    投票
    一个选项可能是在创建资源时首先标记资源。仅当用户只能访问一些AWS服务时,这才可能更好。 30分钟后,您可以遍历所有资源(例如,所有EC2实例)并删除带有该特定标记的资源。
    © www.soinside.com 2019 - 2024. All rights reserved.