lambdafs v2.1.1
LambdaFS
Efficient (de)compression package for AWS Lambda, supporting Brolti, Gzip and Tarballs
Install
npm install lambdafs --save-prodCLI
This package provides a brotli CLI command to conveniently compress files and/or folders.
npx lambdafs /path/to/compressThe resulting file will be a (potentially tarballed) Brotli compressed file, with the same base name as the source.
Due to the highest compression level, it might take a while to compress large files (100MB ~ 5 minutes).
Usage
The nodejs12.x or nodejs14.x AWS Lambda runtime is required for this package to work properly.
const lambdafs = require('lambdafs');
exports.handler = async (event, context) => {
try {
let file = __filename; // /var/task/index.js
let folder = __dirname; // /var/task
// Compressing
let compressed = {
file: await lambdafs.deflate(file), // /tmp/index.js.gz
folder: await lambdafs.deflate(folder), // /tmp/task.tar.gz
};
// Decompressing
let decompressed = {
file: await lambdafs.inflate(compressed.file), // /tmp/index.js
folder: await lambdafs.inflate(compressed.folder), // /tmp/task
};
return context.succeed({ file, folder, compressed, decompressed });
} catch (error) {
return context.fail(error);
}
};API
deflate(path: string): Promise<string>
Compresses a file/folder with Gzip and returns the path to the compressed (tarballed) file.
The resulting file will be saved under the default temporary directory (
/tmpon AWS Lambda).
Due to costly execution time on AWS Lambda, Gzip is always used to compress files.
inflate(path: string): Promise<string>
Decompresses a (tarballed) Brotli or Gzip compressed file and returns the path to the decompressed file/folder.
The resulting file(s) will be saved under the default temporary directory (
/tmpon AWS Lambda).
Supported extensions are: .br, .gz, .tar, .tar.br (and .tbr), .tar.gz (and .tgz).
For tarballs, original file modes are perserved. For any other files
0700is assumed.
Rationale
Getting large resources onto AWS Lambda can be a challenging task due to the deployment package size limit:
| Limit | Context |
|---|---|
| 50 MB | Zipped, for direct uploads. |
| 250 MB | Unzipped, S3 and layers. |
For this reason, it's important to achieve a very high compression ratio as well as fast decompression times.
This is where the Brotli algorithm comes in:

It allows us to get the best compression ratio and fast decompression times (at the expense of a slow compression).
License
MIT