Package Exports
- lambda-build
- lambda-build/dist/lib.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (lambda-build) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
lambda-build ⚡️
- Bundle, archive and upload your lambda functions using esbuild
How it works
- 🎯 Point it to a js/ts file containing your lambda handler(s)
- 📦 Get a zip file containing tour bundle
- 🚀 Upload it to aws
Install
npm i --save-dev lambda-build
- see options:
npx lambda-build --help
CLI Usage
- if your handler is called
index.js|ts
, you can generate a localarchive.zip
by running:
npx lambda-build
- use upload to create a bundle and upload it to aws
- use archive to create a bundle and save it as a local
archive.zip
file
lambda-build archive
npx lambda-build archive
bundles your code and creates a local archive.zip
file that you can then upload to aws yourself.
- using
-e
, set a custom entry file:
npx lambda-build archive -e src/index.ts
- using
-x
, exclude some libraries from bundling (for example, if you already load them in a layer):
npx lambda-build archive -e src/index.ts -x lodash dayjs
- using
-m
, generate ameta.json
file which you can then use to analyze your bundle:
npx lambda-build archive -e src/index.ts -m
lambda-build upload
npx lambda-build upload
bundles your code and then uploads it directly to your AWS lambda functions (requires the aws cli to be locally configured).
- specify the lambda functions that you would like to deploy to:
npx lambda-build upload my-lambda1 my-lambda2 -e src/index.ts
- you can specify the region using the
-r
flag (otherwise it defaults tous-east-1
):
npx lambda-build upload my-lambda1 my-lambda2 -e src/index.ts -r us-east-2
Library Usage
build()
import { build } from 'lambda-build';
const res = await build({
entry: 'src/index.js',
external: ['lodash', 'dayjs'],
metafile: true,
});
- returns a
res
object:res.archive
- Buffer - contents of the zip archiveres.archiveSize
- string - the size of the archiveres.meta
- string - contents of the meta file
buildAndUpload()
import { buildAndUpload } from 'lambda-build';
const res = await buildAndUpload({
entry: 'src/index.js',
external: ['lodash', 'dayjs'],
metafile: true,
lambdas: ['my-lambda1', 'my-lambda2'],
region: 'us-east-2',
});
- returns a
res
object:res.archive
- Buffer - contents of the zip archiveres.archiveSize
- string - the size of the archiveres.meta
- string - contents of the meta fileupdatedArns
- string[] - an array with the ARNs of the lambda functions that were successfully deployed
Screencast
More Lambda Screencasts
- How to deploy a lambda function using versioning and aliases + API Gateway
- How to install npm modules in AWS Lambda?
- How to deploy a lambda function using github actions?
- How to use layers with Lambda functions?
- How to connect AWS Lambda to a MySQL database to update it? (using RDS proxy)
- How to use environment variables with a Lambda function? (and how to encrypt them with KMS)
- How to use ImageMagick with a Lambda function on AWS?
- How to pass a url query string or a route parameter to AWS Lambda from API Gateway?
- How to build a chat using Lambda + WebSocket + API Gateway? (nodejs)
- What is an AWS lambda function?
- How to restrict access to a static S3 site using HTTP Basic Auth?
- AWS Lambda intro - versions, aliases, concurrency, triggers, logs and monitoring