AWS Cognito:获取用户列表的方法?
Posted
技术标签:
【中文标题】AWS Cognito:获取用户列表的方法?【英文标题】:AWS Cognito: Methods to Get a List of users? 【发布时间】:2018-02-27 02:01:31 【问题描述】:我正在使用 Angular 4(使用 TypeScript 语言)前端开发 Web 应用程序,并使用 AWS 服务后端大小。 此应用程序只能由一组用户访问(每个用户都有自己的邮件和密码)。这组用户在 AWS Cognito - 用户池中定义。 我怎样才能拥有这些用户的完整列表及其属性 在前台看到她?以及如何仅在前端更改它们的属性?
我看到了 AWS Cognito (https://github.com/aws/amazon-cognito-identity-js) 的 javascript 方法,但没有找到任何我想做的事情。
我想使用某种方法来显示完整的用户列表及其属性(如 Cognito 的 AWS 管理控制台中所示) 并且总是,由于另一种方法,我的应用程序能够编辑一些信息作为用户的“组”。
谁能告诉我这是否可行?
【问题讨论】:
【参考方案1】:迟到的回应,但对于那些可能需要它的人:
创建新的 IAM 策略,允许 Cognito 列表用户
JS中的代码
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider(
apiVersion: '2016-04-18',
region: "eu-central-1",
credentials: Auth.essentialCredentials(credentials)
);
var params =
UserPoolId: environment.amplify.Auth.userPoolId, /* required */
AttributesToGet: [
"email",
],
Limit: 0
;
cognitoidentityserviceprovider.listUsers(params, function (err, data)
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
);
);
【讨论】:
嗨,我收到此错误Validation error detected: Value '100' at 'limit' failed to satisfy constraint: Member must have value less than or equal to 60
。如果我尝试增加限制,我会收到上述错误消息。
@prakashtank 根据文档,docs.aws.amazon.com/cognito/latest/developerguide/limits.html,单个 List/Lookup API 调用的最大结果数为 60
@Zecide :是的,你是对的。我得到了解决方案。我需要通过 paginationToken 来获取下 60 个用户,依此类推...【参考方案2】:
此函数将列出用户,只需使用 aws 密钥和密钥、用户池区域和 id 并调用函数 getUsers()。 您可以在参数中使用过滤器来执行更具体的请求。 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#listUsers-property
var AWS = require('aws-sdk');
exports.getUsers= () =>
var params =
UserPoolId: USER_POOL_ID
AttributesToGet: [
'ATTRIBUTE_NAME',
],
;
return new Promise((resolve, reject) =>
AWS.config.update( region: USER_POOL_REGION, 'accessKeyId': AWS_ACCESS_KEY_ID, 'secretAccessKey': AWS_SECRET_KEY );
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.listUsers(params, (err, data) =>
if (err)
console.log(err);
reject(err)
else
console.log("data", data);
resolve(data)
)
);
【讨论】:
如果我错了,请纠正我,但是此方法是否以分页格式返回列表?例如,如果您的 cognito 池中有超过 60 个用户,您必须调用 listUsers 方法,直到在响应中没有收到任何分页标记? 我几乎一年没有使用它,但我几乎可以肯定它会返回整个用户列表。我知道您可以在 params 对象中使用过滤器,但它们不包括分页。事情可能已经改变,但去年就是这样 @PedroSilva 不,它不返回整个列表(至少现在是这样),它返回一个PaginationToken
参数。
抱歉,他们可能更改了代码。下周末我会尝试更新代码,因为我已经 2 年没有使用 sdk了【参考方案3】:
查看 Cognito 身份服务提供商 SDK。
SDK Link
想要的函数是listUsers();
【讨论】:
以上是关于AWS Cognito:获取用户列表的方法?的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以在 AWS Lambda 中获取 Cognito 用户名?
是否可以在没有 Cognito 用户池的情况下使用 AWS Amplify Analytics?
我无法获取用户的 AWS Cognito 凭证 (swiftUI)