如何通过管理员

时间:2018-07-04 16:41:01

标签: amazon-web-services aws-cognito

当用户注册但不想确认他的电子邮件时,我遇到了一个问题。解决方案是从AWS Cognito删除未经确认的用户。

因此,由于我不知道他的密码,我试图编写一个Lambda函数,该函数将通过API Gateway触发。此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);
    }
});

我得到一个错误:

  

用户无权执行...

由于安全性,我不想在前端部分设置我的管理员凭据,而是想在此lambda中完成所有工作...该怎么做?

有什么想法吗? 有什么解决办法可以防止此问题?

2 个答案:

答案 0 :(得分:1)

您可以为lambda函数分配角色,并调用cognito api,而无需将任何参数传递给用于访问aws服务的库,这样,凭据提供程序将退回到假定的角色,并具有lambda执行角色身份。

通常,角色是与亚马逊相关的授权使用的方式。

顺便说一句,这意味着您必须创建一个iam角色,一个允许正确执行认知操作的策略,并将其附加到该角色。

答案 1 :(得分:0)

const cisp = new CognitoIdentityServiceProvider({ apiVersion: '2016-04-18' })
cisp.adminDeleteUser().promise() //delete current user as admin