嘿,我写了一些代码来下载Cognito用户池中的所有用户,但是它似乎永远存在。我很确定我正确使用了分页令牌。 Cognito的UI估计我有大约10,000个用户,但是我在循环中添加了一个断点分钟,而我的List
有50,000多个,这没有任何意义。
帮助非常感谢!
using (AmazonCognitoIdentityProviderClient provider = AuthorizedClient())
{
try
{
List<UserType> users = new List<UserType>();
bool continueListing = true;
ListUsersResponse response = provider.ListUsers(
new ListUsersRequest
{
UserPoolId = UserPoolId,
Limit = 60,
AttributesToGet = new List<string>
{
"email"
}
});
users.AddRange(response.Users);
string paginationToken = response.PaginationToken;
while (continueListing)
{
response = provider.ListUsers(
new ListUsersRequest
{
UserPoolId = UserPoolId,
Limit = 60,
PaginationToken = paginationToken,
AttributesToGet = new List<string>
{
"email"
}
});
if (response.Users.Count < 60)
{
continueListing = false;
}
else
{
paginationToken = response.PaginationToken;
users.AddRange(response.Users);
}
}
return users;
}
catch (Exception)
{
//_session.NotifyUser(Notification.GeneralError());
//_logger.LogError(e.Message);
}
return null;
}
答案 0 :(得分:2)
请勿从cognito列出您的用户! 您将开始达到其api限制。 为用户轮询数据库,您将拥有更多控制权。
答案 1 :(得分:0)
我最终使用费率门将其启用。我认为,当您的垃圾邮件请求在HTTP领域变得混乱时,您就会收到有趣的响应。无论如何,如果每秒超过5个ListUsers API调用,您将获得RateExceedException,无论如何它都将不起作用,因此无论如何我都需要一个速率门。
这是我使用的“ RateGate”,效果非常好。我只是将其设置为将我的循环限制为每秒4次迭代(小于最大值)。