Thursday, 13 April 2017

Lambda Function Error : Process exited before completing request (Lambda + s3)

I have download a zip file from s3 bucket then extracting the zip file and finally upload one file to s3 bucket in Lambda function using Node JS.But am getting the error "Process exited before completing request"

exports.handler = function (evt) {

downloadZipFile(params, downloadPath, function (err) {
    if (err) {
        context.done(err);
    } else {
        processZipFile(downloadPath, function (err) {
            if (err) {
                context.done(err);
            } else {
                context.done(err);
            }
        });

    }
 });

};

function downloadZipFile(params, downloadPath, callback) {

const file = fs.createWriteStream(downloadPath);

s3.getObject(params)
    .on('httpData', function (chunk) {

        file.write(chunk);
    })
    .on('success', function () {

        callback(null);
    })
    .on('error', function (err) {

        callback(err);
    })
    .on('complete', function () {

        file.end();
    })
    .send();
}

function processZipFile(filePath) {

const stats = fs.statSync(filePath)
const fileSizeInBytes = stats.size

if (fileSizeInBytes > 0) {

    var srcPath = filePath;
    var destPath = "./tmp";
    targz.decompress({
        src: srcPath,
        dest: destPath

    }, function (err) {
        if (err) {
            console.log(err);
        } else {
            console.log("Done!");

            UploadFile();
        }

    });
  }
}

function UploadFile() {

var body = fs.createReadStream('./tmp/SampleFile.txt')

var srcfileKey = "SampleFile.txt";
// Upload the stream
var s3obj = new AWS.S3({ params: { Bucket: bucketName, Key: srcfileKey } });
s3obj.upload({ Body: body }, function (err, data) {
    if (err) {
        console.log("An error occurred", err);
    }

    console.log("Uploaded the file at", data.Location);
 })
}



via Sharan

No comments:

Post a Comment