繁体   English   中英

function 在从 aws 中的 s3 读取文件后将数据传递给 aws cognito 时退出 lambda 在 nodejs 中

[英]function exits when passing data to aws cognito after reading file from s3 in aws lambda in nodejs

我是新手,遇到问题,在从位于 S3 存储桶中的 csv 文件读取数据后,我必须在 Cognito 中创建近 200 个用户问题是,如果用户已经存在于 Cognito 中,我的代码将停止执行并给出我收到一个错误“给定 email 的帐户已经存在。” 有没有一种方法可以传递整个数据。 如果 cognito 中已经有用户具有相同的 email,它会跳过该用户并检查新的用户数据,最后在 cognito 中已经存在哪些用户。这 function 在 cognito 中创建用户
这是用于创建认知用户的 function

       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("\r\n"); // 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)
    }
  }
}

一个快速的谷歌搜索带来了这个: How to check Email Already exists in AWS Cognito?

这肯定是前端,但您的用例似乎是偶尔快速运行的脚本,而不是常规使用的用户系统 - 在这种情况下,这是要解决的基本编程 101。 你在你的电话周围放了另一个 try catch 来注册用户。 您检查抛出的异常,如果它“已经注册”,您将通过并继续循环而不会中断。 上面的链接可以让您了解要寻找什么来确定它是否是该异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM