当用户注册但不想确认他的电子邮件时,我遇到了一个问题。解决方案是从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中完成所有工作...该怎么做?
有什么想法吗? 有什么解决办法可以防止此问题?
答案 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