You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从AWS Cognito用户池按given_name与用户组筛选用户?

解决方案:AWS Cognito 按 given_name 和用户组筛选用户

方案1:组合ListUsersInGroup与ListUsers API,通过用户ID关联筛选

  • 先调用listUsersInGroup获取目标组的所有用户,记录每个用户的Username或Sub(用户唯一ID)
  • 再调用listUsers,用Filter参数指定given_name的筛选条件(示例:given_name = "John")
  • 将两个结果集按用户ID取交集,得到同时满足组和given_name条件的用户
  • 注意处理分页:若组内用户或符合given_name的用户超过100个,需循环调用API获取全部分页结果

示例代码(JavaScript):

const AWS = require('aws-sdk');
const cognito = new AWS.CognitoIdentityServiceProvider();

async function filterUsersByGroupAndGivenName(userPoolId, groupName, givenName) {
  // 获取组内所有用户
  let groupUsers = [];
  let nextToken;
  do {
    const groupParams = {
      UserPoolId: userPoolId,
      GroupName: groupName,
      NextToken: nextToken
    };
    const groupResult = await cognito.listUsersInGroup(groupParams).promise();
    groupUsers = [...groupUsers, ...groupResult.Users];
    nextToken = groupResult.NextToken;
  } while (nextToken);

  // 获取符合given_name的用户
  let nameFilteredUsers = [];
  nextToken = undefined;
  do {
    const userParams = {
      UserPoolId: userPoolId,
      Filter: `given_name = "${givenName}"`,
      NextToken: nextToken
    };
    const userResult = await cognito.listUsers(userParams).promise();
    nameFilteredUsers = [...nameFilteredUsers, ...userResult.Users];
    nextToken = userResult.NextToken;
  } while (nextToken);

  // 取交集
  const groupUserIds = new Set(groupUsers.map(u => u.Username));
  return nameFilteredUsers.filter(u => groupUserIds.has(u.Username));
}

方案2:同步用户数据到DynamoDB,实现高效查询

  • 创建Lambda触发器,在用户创建、更新、加入/退出组时,将用户的given_name、所属组、Username等关键信息同步到DynamoDB表
  • 在DynamoDB表中创建复合索引(比如以groupName为分区键,givenName为排序键),或全局二级索引,支持按组和given_name的组合查询
  • 直接通过DynamoDB的Query操作(比Scan更高效)获取符合条件的用户

优势:避免多次调用Cognito API,支持大规模用户的快速筛选,扩展性强

方案3:使用Amazon Athena查询Cognito导出数据

  • 开启Cognito用户池的数据导出功能,将用户数据定期导出到S3存储桶
  • 在Athena中创建外部表,映射S3中的Cognito导出数据
  • 编写SQL查询,同时过滤given_name和组字段(注意解析Cognito导出的组数组结构)

适用场景:不需要实时数据,适合批量分析或离线查询的场景


内容的提问来源于stack exchange,提问作者nev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:06