1

我正在使用 aws cognito 为我的应用程序创建客户并将他们的 id 存储在我的数据库中以保留本地记录。我为管理员用户使用了本地数据库。我已经使用 aws amplify 注册用户但是我在以管理员身份登录时删除用户时遇到问题。

我正在使用 aws sdk

aws.config.update({
    accessKeyId: "string",
    secretAccessKey: "string",
    region: process.env.REACT_APP_REGION
});


aws.config.credentials = new aws.CognitoIdentityCredentials({
    IdentityPoolId: process.env.REACT_APP_IDENTITYPOOLID,
    AllowUnauthenticatedIdentities: true,
    AccountId: 'string',
    RoleArn: 'arn:aws:iam::string:role/Cognito_WebReactAuth_Role',
});


var params  = {
    UserPoolId: process.env.REACT_APP_USERPOOLID,
    Username: id,
};

var cognitoidentityserviceprovider = new aws.CognitoIdentityServiceProvider();

cognitoidentityserviceprovider.adminDeleteUser(params, function(err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else     console.log(data);           // successful response
});

但它给了我错误 Not authorized to perform sts:AssumeRoleWithWebIdentity and CredentialsError: Missing credentials in config

我想要实现的是使用我的本地数据库以管理员身份登录并列出本地数据库中的所有客户。当我从 cognito 中单击删除用户时,本地数据库将被删除。

任何帮助表示赞赏。

4

2 回答 2

0

所有的管理服务都可以这样使用。AWS 文档很难理解。这个管理员示例应该放在某个地方,因为它可以派上用场。

import aws from 'aws-sdk';

aws.config.accessKeyId = process.env.REACT_APP_AWS_ACCESS_KEY;
aws.config.secretAccessKey = process.env.REACT_APP_AWS_SECRET_ACCESS_KEY;
aws.config.region = process.env.REACT_APP_REGION;

let params = {
   UserPoolId: process.env.REACT_APP_USERPOOLID,
   Username: user.cognitoClientId,
};

let cognitoidentityserviceprovider = new aws.CognitoIdentityServiceProvider();

cognitoidentityserviceprovider.adminDeleteUser(params, function (err, data) 

无需添加以下内容,因为它仅适用于前端。

aws.config.credentials = new aws.CognitoIdentityCredentials({
   IdentityPoolId: process.env.REACT_APP_IDENTITYPOOLID,
   AllowUnauthenticatedIdentities: true,
   AccountId: 'string',
   RoleArn: 'arn:aws:iam::string:role/Cognito_WebReactAuth_Role',
});
于 2018-07-27T06:22:53.197 回答
0

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述 用于删除用户的 lambda 函数,我已经测试过了,它可以工作。有回应。确保将 cognitoidentityserviceprovider.adminDeleteuser() 函数作为 await 以获得非空响应。否则它会来来去去而不等待得到回应

于 2021-03-31T14:58:10.780 回答