如何通过管理员从 NodeJS lambda 的用户池中删除用户
How to delete a user from the user pool in the NodeJS lambda by admin
当用户注册但不想确认他的电子邮件时,我遇到了一个问题。解决方案是从 AWS Cognito 中删除一个未确认的用户。
因为我不知道他的密码,所以我正在尝试编写一个 Lambda 函数,我将通过 API 网关触发该函数。此 lambda 应该删除 Cognito 用户。
我写了这段代码,但它不起作用。
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({
apiVersion: '2016-03-18',
});
var params = {
UserPoolId: 'us-east-1_123456',
Username: 'user@mail.com' // I want to remove this user
};
cognitoidentityserviceprovider.adminDeleteUser(params, function (err, data) {
if (err) {
callback(err, err.stack);
} else {
callback(data);
}
});
我收到一个错误:
user is not authorized to perform ...
出于安全考虑,我不想在前端部分设置我的管理员凭据,我想在这个 lambda 中完成所有工作...怎么做?
有什么想法吗?
有什么解决方案可以防止这个问题吗?
您可以为 lambda 函数分配一个角色并调用 cognito api,而无需将任何参数传递给您用于访问 aws 服务的库,这样凭证提供程序将回退到假定的角色并具有 lambda 执行角色的身份。
通常角色是亚马逊相关授权的方式。
顺便说一句,这意味着您必须创建一个 iam 角色,一个允许正确认知操作的策略并将其附加到所述角色。
const cisp = new CognitoIdentityServiceProvider({ apiVersion: '2016-04-18' })
cisp.adminDeleteUser().promise() //delete current user as admin
当用户注册但不想确认他的电子邮件时,我遇到了一个问题。解决方案是从 AWS Cognito 中删除一个未确认的用户。
因为我不知道他的密码,所以我正在尝试编写一个 Lambda 函数,我将通过 API 网关触发该函数。此 lambda 应该删除 Cognito 用户。
我写了这段代码,但它不起作用。
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({
apiVersion: '2016-03-18',
});
var params = {
UserPoolId: 'us-east-1_123456',
Username: 'user@mail.com' // I want to remove this user
};
cognitoidentityserviceprovider.adminDeleteUser(params, function (err, data) {
if (err) {
callback(err, err.stack);
} else {
callback(data);
}
});
我收到一个错误:
user is not authorized to perform ...
出于安全考虑,我不想在前端部分设置我的管理员凭据,我想在这个 lambda 中完成所有工作...怎么做?
有什么想法吗? 有什么解决方案可以防止这个问题吗?
您可以为 lambda 函数分配一个角色并调用 cognito api,而无需将任何参数传递给您用于访问 aws 服务的库,这样凭证提供程序将回退到假定的角色并具有 lambda 执行角色的身份。
通常角色是亚马逊相关授权的方式。
顺便说一句,这意味着您必须创建一个 iam 角色,一个允许正确认知操作的策略并将其附加到所述角色。
const cisp = new CognitoIdentityServiceProvider({ apiVersion: '2016-04-18' })
cisp.adminDeleteUser().promise() //delete current user as admin