AWS COGNITO: как реализовать триггер Post Confirmation, который работает только после подтверждения регистрации, а не после подтверждения ForgotPassword / ResetPassword

#node.js #angular #aws-lambda #amazon-cognito #aws-amplify

#node.js #angular #aws-lambda #amazon-cognito #aws-amplify

Вопрос:

Кто-нибудь, пожалуйста, скажите мне, как можно отправить это письмо только после Post подтверждения регистрации. Этот код отправляет почту после каждого подтверждения, будь то забыть пароль / сбросить пароль или зарегистрироваться.

 var aws = require('aws-sdk');

var ses = new aws.SES();

exports.handler = (event, context, callback) => {
    console.log(event);

    if (event.request.userAttributes.email) {
            sendEmail(event.request.userAttributes.email, "Congratulations "   event.userName   ", you have been confirmed: ", function(status) {

            // Return to Amazon Cognito
            callback(null, event);
        });
    } else {
        // Nothing to do, the user's email ID is unknown
        callback(null, event);
    }
};

function sendEmail(to, body, completedCallback) {
    var eParams = {
        Destination: {
            ToAddresses: [to]
        },
        Message: {
            Body: {
                Text: {
                    Data: body
                }
            },
            Subject: {
                Data: "Cognito Identity Provider registration completed"
            }
        },

        // Replace source_email with your SES validated email address
        Source: "<source_email>"
    };

    var email = ses.sendEmail(eParams, function(err, data){
        if (err) {
            console.log(err);
        } else {
            console.log("===EMAIL SENT===");
        }
        completedCallback('Email sent');
    });
    console.log("EMAIL CODE END");
};
 

Ответ №1:

Вы можете проверить triggerSource атрибут event объекта.

После подтверждения события регистрации источником триггера будет PostConfirmation_ConfirmSignUp

Ваша функция дескриптора будет выглядеть следующим образом:

 exports.handler = (event, context, callback) => {
  console.log(event);

  if (
    event.request.userAttributes.email
    amp;amp; event.triggerSource === "PostConfirmation_ConfirmSignUp") {
    sendEmail(event.request.userAttributes.email, "Congratulations "   event.userName   ", you have been confirmed: ", function (status) {

      // Return to Amazon Cognito
      callback(null, event);
    });
  } else {
    // Nothing to do, the user's email ID is unknown
    callback(null, event);
  }
};
 

Ссылка: Источники лямбда-триггеров пользовательского пула