我是新来的,我有问题,我必须从位于S3桶的csv文件读取数据后,在cognito中创建近200个用户问题是,如果用户已经在Cognito中存在,我的代码停止执行,并给我一个错误"给定的电子邮件帐户已经存在。"有没有一种方法可以让我传递整个数据。如果认知中已经有用户使用相同的电子邮件,它会跳过该用户并检查新用户数据,最后哪些用户已经存在于认知中。这是在认知中创建用户的函数
下面是创建认知用户的函数
function RegisterUser(data2) {
console.log(data2[1])
for(let i=0;i<=data2.length;i++){
var attributeList = [];
var cognitoUser;
attributeList.push(new AmazonCognitoIdentity.CognitoUserAttribute({ Name: "name", Value: data2[i][0]}));
attributeList.push(new AmazonCognitoIdentity.CognitoUserAttribute({ Name: "email", Value: data2[i][1] }));
try{
return new Promise((resolve, reject) => {
userPool.signUp(data2[i][1], data2[i][2], attributeList, null, (err, result) => {
if (err) {
console.log(err.message);
reject(err);
return;
}
cognitoUser = result.user;
resolve(cognitoUser);
});
});
}catch(err){
return{
success:false,
message:err
}
}
}
}
这里是lambda处理程序
exports.handler = async (event, context) => {
try {
// Converted it to async/await syntax just to simplify.
const data = await S3.getObject({Bucket: 'user-data-file', Key: 'SampleCSVFile_2kb.csv'}).promise();
var data1 = Buffer.from(data.Body).toString();
var data2 = data1.split("rn"); // SPLIT ROWS
for (let i in data2) { // SPLIT COLUMNS
data2[i] = data2[i].split(",");
}
const userPoolResponse = await RegisterUser(data2);
}
catch (err) {
return {
statusCode: err.statusCode || 400,
body: err.message || JSON.stringify(err.message)
}
}
}
在谷歌上快速搜索了一下:如何查看AWS Cognito中已经存在的电子邮件?
这肯定是前端,但你的用例似乎是一个快速偶尔运行脚本,而不是一个经常使用的用户系统-在这种情况下,这是基本的编程101来解决。在调用周围放置另一个try catch来注册用户。你检查抛出的异常,如果它'已经注册',你通过并继续在循环中不中断。上面的链接可以给你一些想法,看看要寻找什么来确定是否存在异常。