我想在我的Android应用中为用户提供删除帐户的功能。我已经使用AWS Amplify和
当用户在应用程序中点击“删除我的帐户”时,将调用该函数。为了测试该函数,我在Lambda函数中使用硬编码的用户名,而不是将其传递到函数中。但即使如此也不起作用。部署Lambda函数后,我通过单击控制台中的“测试”来运行函数。然后控制台显示
这是我的
在我测试这个函数之后,我的Cognito用户池"syz....f-dev"中仍然存在用户"5b53....138"。 这是我在Cloudwatch中找到的日志文件:
AWS Cognito用户池
设置了登录/注册功能。但是Amplify没有提供“删除用户”功能,因此我想使用Lambda函数从我的cognito用户池中删除用户。当用户在应用程序中点击“删除我的帐户”时,将调用该函数。为了测试该函数,我在Lambda函数中使用硬编码的用户名,而不是将其传递到函数中。但即使如此也不起作用。部署Lambda函数后,我通过单击控制台中的“测试”来运行函数。然后控制台显示
执行结果:成功
,但响应为null
。我期望响应为状态200或400。在执行的CloudWatch日志中,我只能看到我的第一个日志语句(“我在这里”),其他两个没有显示。在Cognito控制台中,用户仍然存在。这是我的
Lambda代码
(Node.js
):const AWS = require('aws-sdk');
console.log("I was here");
var params = {
UserPoolId: 'syz****f-dev',
Username: '5b53****138'
};
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({
"region": 'eu-central-1',
});
exports.handler = async (event) => {
cognitoidentityserviceprovider.adminDeleteUser(params, function(err, data) {
if (err) {
var response = {
statusCode: 400,
body: JSON.stringify('Didnt work!'),
};
console.log(err, err.stack);
return response;
}
else {
response = {
statusCode: 200,
body: JSON.stringify('yeah!'),
};
console.log(data);
return response;
}
});
};
在我测试这个函数之后,我的Cognito用户池"syz....f-dev"中仍然存在用户"5b53....138"。 这是我在Cloudwatch中找到的日志文件:
我的Lambda函数有一个角色,具有这三个策略,我使用IAM策略模拟器,操作AdminDeleteUser
是允许的,并且AmazonCognitoAuthenticatedIdentities
也被允许,所以这不应该是问题:
- AmazonCognitoAuthenticatedIdentities
- AmazonCognitoPowerUser
- AWSLambdaBasicExecutionRole
在CloudWatch中,我可以看到函数被调用。