AWS Cognito 用户池 - 用户总数和查询

arp*_*pit 5 amazon-web-services amazon-cognito

我正在开发一个使用 Cognito 作为身份提供者的应用程序。

我需要从 Cognito 获取用户总数以显示在 UI 上。但问题是 Cognito 不提供用户总数,但它确实从描述用户池 api 中给出了估计的用户数量。我不明白的是为什么“估计”计数而不是准确的?是因为联合用户吗?

任何使用身份提供商的人都不会在自己的应用程序中拥有用户(或者他们会吗?)。那么为什么 Cognito 的查询能力如此基础呢?为了处理这种情况,人们是否应该在自己的应用程序中拥有一份用户副本?但在这种情况下,挑战是如何同步用户?App Sync 仅适用于身份池,不适用于用户池。

小智 8

您可以使用AWS SDK提供的DescribeUserPool API获取总用户数。 用户计数由结果中的EstimatedNumberOfUsers键表示

您可以在此处找到更多详细信息-DescribeUserPool AWS SDK


小智 2

我也曾有过和你一样的疑惑。据我所知,Cognito API 没有专门满足您需求的端点。

您应该(以传统方式)使用 ListUser 您可能需要使用它多次),当您获得所有用户时,数组的长度将是用户总数。

我找到的解决方案是:

  1. 在我的数据库中创建一个表,我可以在其中保存该统计信息,即一个计数器,其中包含我的用户池的已确认或注册用户数量(这取决于您的要求)。
  2. 每次确认用户时都会启动触发器,并在关联的 lambda 中修改上述表中的计数器(递增它)。可以在“触发器”部分中从用户池本身配置触发器。