/lalr

Run lambdas through HTTP locally

Primary LanguageTypeScript

LALR

Local API Gateway-lambda runner.

Runs your lambda locally with hot reloading through an API-gateway mock.

Features

  • Is able to listen to your source code and react to changes. Is also able to compile your code when that happens.
  • Starts a web server at 127.0.0.1:8080 and will through various adapters run your code and return it the HTTP client.

Language support:

  • JavaScript
  • TypeScript
  • Python

Dependencies

Due to esbuild having difficult bundling nodemon, it's required to have in your node environment before running.

Motivation

AWS' sam has a CLI tool has a command sam local start-api, that will take a yaml file and start an API gateway mock HTTP server. The problem with this is that there no support to hot reload your code from a built asset folder, you manually need to run sam build to build your lambda and then run it. If you're using aws-cdk to deploy your code, it doesn't really make sense to build your lambda with sam build.

Usage

yarn add --dev @funnel-io/lalr

TypeScript

$ yarn lalr --lambda-path dist/index.js --lambda-handler lambdaHandler --build-language ts --build "yarn tsc"

JavaScript

$ yarn lalr --lambda-path dist/index.js --lambda-handler lambdaHandler --build-language js

Python

$ yarn lalr --lambda-path handler.py --lambda-handler handler --build-language python

Run example lambda

$ yarn lalr --lambda-path example-dist/index.js --lambda-handler myHandler --build-language js

$ curl -H "x-hello: test" "http://localhost:8080?queryParam=hello"