【问题标题】:Is there a way to batch delete users from cognito pool using lambda?有没有办法使用 lambda 从认知池中批量删除用户?
【发布时间】:2020-05-29 04:44:58
【问题描述】:

我正在使用 congnito 对我的应用程序的用户进行身份验证,并且我有一个 crud 可以一个一个地处理它们,但是在某些情况下,我想在一个批处理操作中一次将它们全部删除。

问题是文档对此只字未提,而其他 A&Q 网站则表示没有办法。

我想在一组 cognito 客户端中使用 Promise.all() 来批量删除它们?但我不知道这是否可能,或者这可能会导致我的 lanmbda 超时?

我有这样的想法。

// const data = req.body.users;
const aws = require('aws-sdk');
const CognitoIdentityServiceProvider = aws.CognitoIdentityServiceProvider;

const toDelete = [];
data.forEach((item) => {
    const client = new CognitoIdentityServiceProvider({ apiVersion: '2016-04-19', region: 'us-east-1' });
    toDelete.push(cliente.adminDeleteUser(/* data */));
})
Promise.all(toDelete).then(() => { /* something */ });

这行得通吗?是不好的做法?有没有更好的办法?

【问题讨论】:

  • 您可以执行此操作,但请注意 API 可能存在速率限制。管理 API 尤其具有较低的限制。 SDK 包含重试逻辑,可以处理其中的一些问题,但如果记录数量过多,您就会遇到这种情况。

标签: node.js aws-lambda amazon-cognito


【解决方案1】:

另一个不使用 lambda 函数的选项是,如果您在 windows 中配置了 aws cli,您可以使用以下脚本作为 bat 文件从列表命令输出中删除单个页面上列出的用户,重复直到所有用户被删除。

您需要下载 JQ 并将其路径添加到系统环境路径中,以便以下操作。

---delete.bat---

@echo 关闭 设置本地

for /f "delims=" %%I in ('aws cognito-idp list-users --user-pool-id $COGNITO_USER_POOL_ID ^| jq -r ".Users | .[] | .Username"')做 ( aws cognito-idp admin-delete-user --user-pool-id $COGNITO_USER_POOL_ID --username %%I echo %%我删除了 )

---delete.bat---

【讨论】:

    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2020-06-15
    • 1970-01-01
    • 2019-08-15
    • 2019-11-12
    • 2020-12-31
    相关资源
    最近更新 更多