Есть ли способ пакетного удаления пользователей из пула Cognito с помощью лямбды? - PullRequest
0 голосов
/ 13 февраля 2020

Я использую congnito для аутентификации пользователей в моем приложении, и у меня есть предложение, где я могу обрабатывать их один за другим, но бывают случаи, когда я хочу удалить их всех сразу в одной пакетной операции.

Проблема в том, что документы ничего не говорят об этом, а другие сайты A & Q говорят, что для этого нет никакого способа.

Я думал использовать Promise.all() в массиве клиентов Cognito, чтобы удалить их в одна партия? но я не знаю, возможно ли это или это может привести к тайм-ауту в моей ланмбде?

что-то подобное я имел в виду.

// 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 */ });

Может ли это сработать? плохая практика? есть ли лучший способ?

1 Ответ

0 голосов
/ 02 марта 2020

Другой вариант без использования лямбда-функций: если вы настроили aws cli в windows, вы можете использовать следующий скрипт в качестве файла bat для удаления пользователей, перечисленных на одной странице, из выходных данных команды перечисления, повторяйте, пока все пользователи не будут удалены.

Вам необходимо загрузить JQ и добавить его путь к системному env-пути, чтобы сработало следующее.

--- delete.bat ---

@ echo off setlocal

for / f "delims =" %% I in ('aws cognito-idp список пользователей --user-pool-id $ COGNITO_USER_POOL_ID ^ | jq -r ".Users |. [] | .Username" ') do (aws cognito-idp admin-delete-user --user-pool-id $ COGNITO_USER_POOL_ID - имя пользователя %% я эхо %% я удалил)

--- delete.bat ---

...