bwx*_*--2 5 node.js amazon-cognito aws-lambda
我想让用户能够在我的 Android 应用程序中删除他们的帐户。我已经使用 AWS Amplify 和AWS Cognito User Pool. 但 Amplify 不提供“删除用户”功能,因此我想使用 lambda 函数从我的认知用户池中删除用户。
当用户点击应用程序中的“删除我的帐户”时,将调用该函数。为了测试该函数,我在 Lambda 函数中使用硬编码的用户名,而不是将用户名传递到函数中。但即使这样也行不通。部署 Lambda 函数后,我通过单击控制台中的“测试”来运行该函数。然后控制台会显示Execution result: succeeded,但响应是null。我希望得到 Status 200 或 400 作为响应。在执行的 CloudWatch 日志中,我只能看到我的第一个日志语句(“我在这里”),其他两个没有显示。在 Cognito 控制台中,用户仍然存在。
这是我的Lambda Code(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;
}
});
};
Run Code Online (Sandbox Code Playgroud)
在我测试此函数后,用户“5b53....138”仍然存在于我的 Cognito 用户池“syz....f-dev”中:
这是我在 Cloudwatch 中找到的日志文件:
我的 Lambda 函数具有这 3 个策略的角色,并且我使用了 IAM 策略模拟器,并且AdminDeleteUser允许执行该操作AmazonCognitoAuthenticatedIdentities,因此这不应该是问题:
在 CloudWatch 中,我可以看到该函数已被调用。
首先,您的用户池 ID 错误,请通过打开 Cognito 用户池找到正确的:在控制台中打开用户池时看到的第一件事是 id:
它以您所在的地区开头,后跟 _(在您的情况下为 )eu-central-1_。
然后尝试使用此代码而不是 adminDeleteUser 函数。然后它应该可以工作:
try {
const data = await cognitoidentityserviceprovider.adminDeleteUser(params).promise();
} catch (error) {
console.log(error);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |