如何通过AWS CLI在Windows中删除Cognito用户池含@mailinator.com的用户
删除AWS Cognito中@mailinator.com域名的用户(Windows环境AWS CLI方案)
AWS Cognito的list-users接口确实不支持正则直接筛选用户,我们可以通过导出全量用户→筛选目标用户→批量删除的流程来解决,以下是具体步骤:
步骤1:导出所有用户到JSON文件
由于list-users默认最多返回60条数据,需处理分页获取全量用户。用PowerShell执行以下脚本(替换USER_POOL_ID为你的用户池ID):
$nextToken = $null $allUsers = @() do { if ($nextToken) { $response = aws cognito-idp list-users --user-pool-id "USER_POOL_ID" --next-token $nextToken | ConvertFrom-Json } else { $response = aws cognito-idp list-users --user-pool-id "USER_POOL_ID" | ConvertFrom-Json } $allUsers += $response.Users $nextToken = $response.NextToken } while ($nextToken) $allUsers | ConvertTo-Json -Depth 10 | Out-File -FilePath "cognito_users.json" -Encoding UTF8
步骤2:筛选目标用户并提取用户名
从导出的JSON中筛选邮箱后缀为@mailinator.com的用户,提取其Username保存到文本文件:
$users = Get-Content -Path "cognito_users.json" | ConvertFrom-Json $targetUsernames = $users | Where-Object { $_.Attributes | Where-Object { $_.Name -eq "email" -and $_.Value.EndsWith("@mailinator.com") } } | Select-Object -ExpandProperty Username $targetUsernames | Out-File -FilePath "target_usernames.txt" -Encoding UTF8
步骤3:批量删除目标用户
循环读取目标用户名文件,逐个调用删除接口(替换USER_POOL_ID):
$usernames = Get-Content -Path "target_usernames.txt" foreach ($username in $usernames) { Write-Host "Deleting user: $username" aws cognito-idp admin-delete-user --user-pool-id "USER_POOL_ID" --username $username }
注意事项
- 确保AWS CLI已配置足够权限:需拥有
cognito-idp:ListUsers和cognito-idp:AdminDeleteUser权限 - 删除前务必核对
target_usernames.txt中的内容,避免误删合法用户 - 大用户池的导出和删除过程耗时较长,请保持终端会话稳定
内容的提问来源于stack exchange,提问作者Murtaza Mandvi
相关产品推荐
相关产品推荐

