1.1.0 • Published 5 years ago

@ignsg/lambpack v1.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
5 years ago

lambpack

A no nonsense AWS Lambda function packager for node.js— it walks the dependency tree of a lambda handler source file and packages it up into the smallest .zip file suitable for uploading to AWS Lambda.

Installing It

npm install lambpack -g

Using It

$ lambpack

  Usage: lambpack [options] <lambdaHandlerFile> <outputZipFileName> [otherFiles...]


  Options:

    -V, --version  output the version number
    -q, --quiet    quiet mode
    -f, --flatten  flatten the lambda path so the resulting handler is at the root of the zip
    -i, --include-aws  include your own aws-sdk (if you depend on it), otherwise the Lambda globally installed version will be used
    -h, --help     output usage information

lambdaHandlerFile is the pathname of a .js file which contains your one and only Lambda.handler function.

outputZipFileName is the pathname of the .zip file you want to output the package.

otherFiles is a space or comma separated list of additional files or directories you may want to include within the deployment .zip file.

-i, --include-aws: Normally all Lambda functions have access to a globally installed aws-sdk package, so it's usually wasteful to upload it with your code (if you use it). However if there is a specific version in your package.json file that you want to use, you can use this switch to force it to include the one you specify. If you don't use aws-sdk at all in your code, then this switch won't really change anything.

-f, --flatten: lambpack normally preserves the location of all files and recreates this structure in the zip. If you use a monorepo approach and have multiple lambda functions inside different folders in can get tedious to keep the name of the handler inside AWS in sync with the folder structure. This options will flatten the resulting directories and place your function at the root of the zip. You can then simply specify the name of the handler like index-handler.js instead of functions/function-one/index-handler.js. If any required dependencies would break as a result of this the client fails with a warning to remove this option.

Example

$ cd my_project
$ lambpack lambda.js ./deploy/lambda.zip

Follow the instructions to upload and enjoy your serverless existence!

Note: lambpack won't automagically solve the issue of packaging modules with native code— in which case you'll need to run lambpack on an AWS Linux EC2 instance. Check out lambda-packager if you want a more complex to setup, but very full-featured packager.