【问题标题】:AWS Cognito delete all users from a user poolAWS Cognito 从用户池中删除所有用户
【发布时间】:2020-06-16 14:38:10
【问题描述】:

我们如何使用 AWS CLI 从 AWS Cognito 的特定用户池中删除所有用户?

【问题讨论】:

    标签: amazon-web-services amazon-cognito


    【解决方案1】:

    如果您安装并配置了 AWS Cli,我创建了一个从 Windows CMD 执行此操作的脚本,这将逐页删除所有用户,因此您需要运行它直到所有用户都被删除。

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

    ---delete.bat---

    @echo off setlocal
    
    for /f "delims=" %%I in 
      ('aws cognito-idp list-users --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 --username %%I 
       echo %%I deleted)
    

    ---delete.bat---

    【讨论】:

    • 你在做什么?创建随机问题并立即提供答案?
    • @Marcin,我是第一次在这个网站上发帖,所以我认为以问答格式发布它可以帮助人们轻松找到它,这就是我在整个网站上看到的格式.如果有其他格式,请告诉我,我会更新。
    【解决方案2】:

    试试下面的:

    aws cognito-idp list-users --user-pool-id $COGNITO_USER_POOL_ID |
    jq -r '.Users | .[] | .Username' |
    while read uname1; do
      echo "Deleting $uname1";
      aws cognito-idp admin-delete-user --user-pool-id $COGNITO_USER_POOL_ID --username $uname1;
    done
    

    【讨论】:

    • 我在windows上试过这个,但它不起作用,这就是我发布另一个的原因。
    • 在我的 Mac 上工作得很好,可能任何 UNIX 类的东西。
    • 您可以在控制台上可用的 AWS CloudShell 上运行它。
    • 您需要安装 jq 才能完成这项工作。
    【解决方案3】:

    抱歉,无法添加评论。我在 Windows 10 中为我工作的ajilpm 提到的命令有相同的要求和轻微修改。您需要下载 jq.exe 并在命令行中保持路径

    ---Start.bat---
    
    @echo off setlocal
    
    for /f "delims=" %%I in ('aws cognito-idp list-users --user-pool-id us-west-2_O7rRBQ5rr --profile dev-hb ^| jq -r ".Users | .[] | .Username"') do ( aws cognito-idp admin-delete-user --user-pool-id us-west-2_O7rRBQ5rr --username %%I --profile dev-hb)
    
    ---delete.bat---
    

    【讨论】:

      【解决方案4】:

      使用 Python 和 boto3: 我使用电子邮件作为用户名

      import boto3 as aws
      import pandas as pd
      
      client_cognito = aws.client('cognito-idp')
      getProperties = pd.read_csv('CognitoUsers.csv',header=0)
      usernames = getProperties['email']
      
      for username in usernames:
          response = client_cognito.admin_delete_user(
              UserPoolId="us-east-1_xxxxxxxxx",
              Username = username,
          )
      

      您需要使用您的 AWS 访问密钥 ID 和 AWS 秘密访问密钥登录 aws-cli

      【讨论】:

        【解决方案5】:

        这是一个基于@ajilpm 的批处理脚本的 bash 版本:

        # deleteAllUsers.sh
        COGNITO_USER_POOL_ID=$1
        
        aws cognito-idp list-users --user-pool-id $COGNITO_USER_POOL_ID |
        jq -r '.Users | .[] | .Username' |
        while read user; do
          aws cognito-idp admin-delete-user --user-pool-id $COGNITO_USER_POOL_ID --username $user
          echo "$user deleted"
        done
        

        您必须安装 jq 并记住使脚本可执行:chmod +x deleteAllUsers.sh

        用户池 ID 可以作为命令行参数提供:./deleteAllUsers.sh COGNITO_USER_POOL_ID

        【讨论】:

          猜你喜欢
          • 2022-07-19
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          • 2019-09-04
          • 2018-01-31
          • 2018-11-07
          • 2020-06-14
          • 1970-01-01
          相关资源
          最近更新 更多