marconi1992 / serverless-offline-lambda

Emulate AWS λ Invocations locally when developing your Serverless project
https://www.npmjs.com/package/serverless-offline-lambda
MIT License
10 stars 10 forks source link
lambda serverless serverless-offline

serverless-offline-lambda

This Serverless plugin extends serverless-offline to emulates AWS λ Invocations on your local machine to speed up your development cycles. To do so, it starts an HTTP server to invoke a Lambda using the AWS SDK.

Installation

First, add Serverless Plugin to your project:

npm install serverless-offline-lambda --save-dev

Then inside your project's serverless.yml file add following entry to the plugins section: serverless-offline-lamda. If there is no plugin section you will need to add it to the file.

It should look something like this:

plugins:
  - serverless-offline-lambda
  - serverless-offline

Example

Run Serverless Offline

sls offline start

Invoke Lambda using AWS SDK.

const AWS = require('aws-sdk');

const lambda = new AWS.Lambda({
  endpoint: new AWS.Endpoint('http://localhost:4000'),
  region: 'us-east-1',
});

lambda.invoke({
  FunctionName: 'function',
  InvocationType: 'Event',
  Payload: JSON.stringify({ key: 'value' }),
}).promise();

Config

By default the Lambda endpoint listens on localhost port 4000, but this can be changed in serverless.yml:

custom:
  lambda:
    host: 0.0.0.0
    port: 1234