Amazon web services 如何在React应用程序中列出Cognito用户池中的所有用户?

Amazon web services 如何在React应用程序中列出Cognito用户池中的所有用户?,amazon-web-services,amazon-cognito,aws-sdk-js,Amazon Web Services,Amazon Cognito,Aws Sdk Js,我有一个网站编辑可以登录的CMS应用程序。我想为编辑器创建一个仪表板,以便能够创建和删除站点用户。站点用户帐户将通过AWS Cognito用户池进行维护,而站点编辑器通过其CMS帐户登录 首先,我希望能够列出给定用户池中的所有用户,供编辑器查看,因此我遵循SDK文档,但它没有解释如何向该方法传递任何凭据。这是SDK的v3版本,我能找到的任何类似示例都使用v2 我走了这么远: 从“@aws sdk/client cognito identity provider”导入{CognitoIdentit

我有一个网站编辑可以登录的CMS应用程序。我想为编辑器创建一个仪表板,以便能够创建和删除站点用户。站点用户帐户将通过AWS Cognito用户池进行维护,而站点编辑器通过其CMS帐户登录

首先,我希望能够列出给定用户池中的所有用户,供编辑器查看,因此我遵循SDK文档,但它没有解释如何向该方法传递任何凭据。这是SDK的v3版本,我能找到的任何类似示例都使用v2

我走了这么远:

从“@aws sdk/client cognito identity provider”导入{CognitoIdentity ProviderClient,ListUsersCommand}”;
const client=新CognitoIdentityProviderClient({地区:“eu-west-2”});
常量参数={};
const command=new ListUsersCommand({UserPoolId:“我的用户\u池\u Id”});
试一试{
const data=wait client.send(命令);
返回此.setState({users:data});
}捕获(错误){
控制台错误(error);
返回此.setState({error:error});
}最后{
this.setState({loading:false});
}
但是,当我运行上述代码并渲染组件时,会出现一个错误:

Error: Credential is missing
    at SignatureV4.credentialProvider (runtimeConfig.browser.js:15)
    at SignatureV4.<anonymous> (SignatureV4.js:169)
    at step (tslib.es6.js:100)
    at Object.next (tslib.es6.js:81)
    at tslib.es6.js:74
    at new Promise (<anonymous>)
    at __awaiter (tslib.es6.js:70)
    at SignatureV4.signRequest (SignatureV4.js:165)
    at SignatureV4.<anonymous> (SignatureV4.js:85)
    at step (tslib.es6.js:100)

我最终找到了v3文档中关于获取和设置凭据的正确部分

您可以通过为应用程序创建新的IAM用户来获取凭据,如下所述

然后,根据您是在服务器端工作还是在客户端工作,您可以通过多种不同的方式将它们添加到应用程序中。例如,在服务器端硬编码需要进行以下更改:

const client=newCognitoIdentityProviderClient({地区:“eu-west-2”});
改为

const client=newCognitoIdentityProviderClient({
区域:“欧盟-西部-2”,
证书:{
accessKeyId:process.env.YOUR_AWS_ACCESS_KEY_ID,
secretAccessKey:process.env.YOUR_AWS_SECRET_ACCESS_KEY,
},
});

然后,通过向上面创建的IAM用户添加一个允许cognito idp:ListUsers的策略,解决了用户无权在资源上执行:cognito idp:ListUsers的错误。指引我正确的方向。

你的应用程序如何验证站点编辑器?CMS(Sanity.io)为编辑器提供了自己的身份验证和登录流程。我们有一个单独的网站用户认证系统,因为我们不需要/不希望用户能够访问网站的CMS部分。
AccessDeniedException: User: [DashboardAdmin IdentityPool ARN] is not authorized to perform: cognito-idp:ListUsers on resource: [UserPool for Site Users ARN]