Какой правильный формат ответа председателя Lambda AWS

#javascript #amazon-web-services #authentication #aws-lambda #amazon-cognito

Вопрос:

Я работаю над проектом VUE Amplify, он почти завершен, но cognito не предлагает проверку дублирования почты, поэтому мне приходится делать это вручную, так как мы знаем, что у AWS есть некоторые триггеры, которые я использую, вызывая функцию Лямбда, мой код:

 var AWS = require("aws-sdk");
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();


exports.handler =  function(event, context, callback) {
  var params = {
    UserPoolId: "us-east-1_xxxXXXxXX",
    AttributesToGet: ["email"]
  };

  cognitoidentityserviceprovider.listUsers(params, (err, data) => {
    if (err) {
      console.log(err, err.stack);
      callback(err)        // here is the error return
    } else {
      data.Users.forEach(function(usuario) {
        if(usuario.Attributes[0].Value == event.request.userAttributes.email){
          return {};
        }
      });
      callback(event);
    }
  });
}
 

но я не понимаю, что я делаю неправильно, возвращается выполнение лямбды…

 Object { code: "UserLambdaValidationException", name: "UserLambdaValidationException", message: "PreSignUp failed with error [object Object]." }
 

Есть идеи?

Ответ №1:

Вам нужно вернуть объект события

https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html

Комментарии:

1. Спасибо, это именно то, что я делал, я просто добавил callback (full, event); , и это не работает, но есть ли способ отменить событие регистрации и отправить пользовательское сообщение? Если я отправлю пустой объект callback (full, {} ); , Cognito вернет { код: «Исключение InvalidLambdaResponseException», имя: «Исключение InvalidLambdaResponseException», сообщение: «Недопустимая версия. Версия должна быть 1» } Приложение.vue:204

2. Разве вы не можете просто вернуть событие;?