如何通过管理员从 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