I'm trying to zip the contents of a directory using node-archiver as suggested here. The function is running in AWS Lambda in the Node.js runtime environment.
My function is as follows:
function zipDirectory(source, outputTarget) {
    var archive = archiver("zip");
    const stream = fs.createWriteStream(outputTarget, { flags: 'w' });
    stream.on("close", () => {
        console.log(archive.pointer() + ' total bytes');
        console.log('archiver has been finalized and the output file descriptor has closed.');
    });
    return new Promise((resolve, reject) => {
        archive.pipe(stream);
        archive.on("error", err => reject(err))
        archive.directory(source, false);
        archive.finalize();
        stream.close();
        resolve();
    });
}
The result is that the zip is created but the file size is zero:
INFO    0 total bytes
INFO    archiver has been finalized and the output file descriptor has closed.
I'm also unable to extract the archive with the following error.
INFO    Error: end of central directory record signature not found
Notes:
- The source directory definitely exists, is populated, and the path is correct.
- Everything is being written to the /tmp/directory to which AWS Lambda allows us read and write access.
- I tried uploading the zipbinary with the Lambda deployment package and running it as a child process, but apparently, that is not supported because it's a 32-bit package. If you have alternatives that I could use to zip directories outside of node that would work in Lambda's runtime, please do tell.
Appreciate any help, thank you!
