I am triggering/Invoking Upload to S3 Bucket Lambda function from another lambda function using Promise in nodejs.
Note:- To Invoke target lambda from source , we need to create a
invoke policy [Under IAM->Policy] and attach it to Lambda Role.

async function uploadToS3 (indexName){
await new Promise((resolve, reject) => {
console.log(" Uploading to S3 ");
//Lambda Parameter
let lambda_params = {
FunctionName: 'Library_Update_S3_Bucket', // Invoke lambda function
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload : JSON.stringify( { name : "ElasticsearchConfig.json", Body :
{"tableName" : "documents" , indexName } })
};
const lambdaS3Result = lambda.invoke(lambda_params , function(err, results)
{
if (err) {
console.log("Upload Failed :- ",err.message);
response = {
statusCode: 500,
body: {message:"Upload to S3 Failed"}
}
reject(err);
}
else{
console.log("Uploaded Successfully to S3");
console.log("Results is :", results.Payload.statusCode )
response = {
statusCode: 200,
body: {message:"Done Uploading to S3"}
}
resolve(results);
}
});
});
}
Lambda Function Name :- Library_Update_S3_Bucket

let response = {};
exports.handler = async (event) => {
// TODO implement
var params = {Bucket : 'pe-library', Key: event.name, Body:
JSON.stringify(event.Body), ContentType: "application/json"};
console.log(params);
try {
await s3.upload (params).promise();
response = {
statusCode: 200,
body: "Uploaded Successfully"
}
} catch (err){
console.log(err)
response = {
statusCode: 500,
body: "Upload Failed"
}
}
return response;
};