Reputation: 451
I'm having to Lambda functions
fruitsData: Here I created an array fruits and invoking sendMail function.
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
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);
}
})
}
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
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