gpt4 book ai didi

amazon-web-services - 在 NodeJS Lambda 函数中列出来自 AWS.CognitoIdentityServiceProvider.listUsers 的用户及其组?

转载 作者:行者123 更新时间:2023-12-05 00:47:02 26 4
gpt4 key购买 nike

因此,我需要在客户的自定义管理屏幕中显示用户列表以及他们的各个组。我在 Lambda 函数中返回 AWS.CognitoIdentityServiceProvider.listUsers 的结果,这很好地列出了用户,但我不确定获取每个用户的组并将它们添加到的最佳方法响应。

我个人觉得他们没有提供包含该信息的 listUsers 之类的方法,这对我来说似乎有点令人惊讶,因为这似乎是一个常见的用例。有没有人解决过这个问题?我有一个可行的解决方案,但它看起来很老套,而且性能可能不是那么好,所以我正在寻找更高效的解决方案。

看来我的选择是要么获取用户池中的每个组并为每个组调用 AWS.CognitoIdentityServiceProvider.listUsersInGroup,然后从 listUsers 遍历所有用户,然后检查他们是否在任何这些组中,或者在 listUsers 的响应中遍历每个用户并为每个用户调用 AWS.CognitoIdentityServiceProvider.adminListGroupsForUser。这些是我唯一的选择吗?第一个选项似乎效率更高一些,因为组比用户少,所以它会导致更少的 API 调用,但看起来这仍然是非常低效的。

最佳答案

根据文档,我会采用以下解决方案:

  1. 组的数量肯定会比用户少。因此最好使用方法:AWS.CognitoIdentityServiceProvider.listGroups
  2. 遍历组列表并从中检索用户。

代码示例:

const AWS = require('aws-sdk')

var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

const USER_POOL_ID = 'region_XXXXXXXXX'

var params = {
UserPoolId: USER_POOL_ID, /* required */
};
cognitoidentityserviceprovider.listGroups(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else {
console.log('Groups list:')
data.Groups.map(groups => {
console.log(groups.GroupName)
})

data.Groups.map( groupEntity => {
var params = {
GroupName: groupEntity.GroupName, /* required */
UserPoolId: USER_POOL_ID, /* required */
};
cognitoidentityserviceprovider.listUsersInGroup(params, function(err1, data1) {
if (err1) console.log(err1, err1.stack); // an error occurred
else {
console.log(`${groupEntity.GroupName} has ${data1.Users.length} users`);

data1.Users.map(userEntity => {
console.log(userEntity.Username)
})
}
});

})
}
});

关于amazon-web-services - 在 NodeJS Lambda 函数中列出来自 AWS.CognitoIdentityServiceProvider.listUsers 的用户及其组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com