有没有办法使用 lambda 从认知池中批量删除用户?



我正在使用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 */ });

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

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

您需要下载 JQ 并将其路径添加到系统 env 路径才能执行以下操作。

---删除.bat---

@echo关 设置本地

for/f "delims=" %%I in ('aws cognito-idp list-users --user-pool-id $COGNITO_USER_POOL_ID ^| jq -r ".用户 | .[] | .用户名"'( do ( AWS cognito-idp admin-delete-user --user-pool-id $COGNITO_USER_POOL_ID --username %%I 回显 %%I 删除了 )

---删除.bat---

最新更新