serverless-offline-lambda-to-lambda
A Serverless Offline plugin that exposes lambdas with no API Gateway event via HTTP, to allow offline direct lambda-to-lambda interactions.
Note - this requires the plugin serverless-offline
.
Installation
Go to your project directory and install the plugin by running :
for npm users
npm install -D serverless-offline-lambda-to-lambda
for yarn users
yarn add serverless-offline-lambda-to-lambda -D
Setup
Open your serverless.yml
configuration file and
- add a
plugins
section - add
serverless-offline-lambda-to-lambda
plugin
plugins:
- serverless-offline-lambda-to-lambda
You may also want to change the port that the plugin runs on - you can do this by specifying the following custom config in your serverless.yml
file:
custom: serverless-offline: port: 4000
Running & Calling
To run:
servlerless offline start
The plugin will create api-gateway proxies for all lambdas.
You will see output like this:
sls offline start Serverless: Running Serverless Offline with lambda-to-lambda supportServerless: Starting Offline: dev/us-east-1. Serverless: Routes
Calling via HTTP Post:
The body of the POST should match the JSON data that would ordinarily be passed in a lambda-to-lambda call. i.e.
curl -X POST \ http://localhost:4000/proxy/my-sls-project-dev-lambda-func \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -d '{ "some-key": "some-value", "other-key": false}'
Invoking the function via the AWS SDK:
You may also invoke the function by using the AWS SDK on your client side... This can be done by specifying a custom "endpoint" in your Lambda configuration like so:
var AWS = ;AWSconfigregion = "us-east-1"; let lambda = region: "us-east-1" endpoint: "http://localhost:4000"; var lambda_args = "some-key": "some-value" "other-key": false; var params = FunctionName: "my-sls-project-dev-lambda-func" // the lambda function we are going to invoke Payload: JSON; lambda;