Bhargav Teja
Bhargav Teja

Reputation: 451

Call an array data from One Lambda to another Lambda function - Node.js

I'm having to Lambda functions

  1. fruitsData: Here I created an array fruits and invoking sendMail function.

  2. sendMail: This function will be invoked from fruitsData function, takes the fruits array, send the Mail and should give the success status message to fruitsData

fruitsData

exports.handler = (event, context, callback) => {
    const fruits = ["Banana", "Orange", "Apple", "Mango"];

    var params = {
        FunctionName: 'sendMail',
        InvocationType: 'RequestResponse',
        LogType: 'Tail',
        Payload: fruits
    };

    lambda.invoke(params, function(err, data) {
        if (err) {
            context.fail(err);
        } else {
            context.succeed(data.Payload);
        }
    })
}

sendMail

exports.handler = (event, context, callback) => {
    var sendPromise = ses.sendEmail(params).promise();

    await sendPromise.then(function(data) {
        console.log("Email sent successfully");
        callback(null, "Email sent successfully");
    }).catch(
        function(err) {
            console.error(err, err.stack);
        });
}

How I can send fruits as an email and get the success message in fruitsData.

Upvotes: 1

Views: 793

Answers (1)

Assael Azran
Assael Azran

Reputation: 2993

Ensure your lambdas have both AWSLambdaExecute and AWSLambdaBasicExecutionRole policies.

Lambda fruitsData:

Change Payload: fruits to Payload: JSON.stringify({ "fruits" : fruits }).

Lambda sendMail:

 const charset = 'UTF-8';
 exports.handler = async (event, context, callback) => {
    const message = JSON.stringify(event, null, 2);
    const params = {
       Source: source,
       Destination: {
           ToAddresses: [recipient.email]
       },
       Message: {
           Subject: {
               Data: "Example",
               Charset: charset
           },
           Body: {
               Text: {
                   Data: message,
                   Charset: charset
               },
               Html: {
                   Data: message,
                   Charset: charset
               }
           }
       }
   };
   try {
       await ses.sendEmail(params).promise();
       callback(null, "Email sent successfully");
   }
   catch (ex) {
       console.log('Unhandled Exception', ex);
   }
};

Upvotes: 2

Related Questions