A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/ashiina/lambda-local below:

ashiina/lambda-local: Commandline tool to run Amazon Lambda function on local machines.

Lambda-local lets you test NodeJS Amazon Lambda functions on your local machine, by providing a simplistic API and command-line tool.

It does not aim to be perfectly feature proof as projects like serverless-offline or docker-lambda, but rather to remain very light (it still provides a fully built Context, handles all of its parameters and functions, and everything is customizable easily).

The main target are unit tests and running lambda functions locally.

npm install -g lambda-local

Or

npm install
npm install --only=dev
npm run build

If you're unsure about some definitions, see Definitions for terminology.

API accessible with:

const lambdaLocal = require("lambda-local");

Or on TypeScript (supported on 1.7.0+):

import lambdaLocal = require("lambda-local");
lambdaLocal.execute(options)

Executes a lambda given the options object, which is a dictionary where the keys may be:

Key name Description event requested event as a json object lambdaPath requested path to the lambda function lambdaFunc pass the lambda function. You cannot use it at the same time as lambdaPath profilePath optional, path to your AWS credentials file profileName optional, aws profile name. Must be used with lambdaHandler optional handler name, default to handler region optional, AWS region, default to us-east-1 timeoutMs optional, timeout, default to 3000 ms esm boolean, marks that the script is an ECMAScript module (use import), default false environment optional, extra environment variables for the lambda envfile optional, load an environment file before booting envdestroy optional, destroy added environment on closing, default to false verboseLevel optional, default 3. Level 2 dismiss handler() text, level 1 dismiss lambda-local text and level 0 dismiss also the result. Level -1 only displays handler() text. callback optional, lambda third parameter callback. When left out a Promise is returned onInvocationEnd optional. called once the invocation ended. useful when awslambda.streamifyResponse is used to distinguish between end of response stream and end of invocation. clientContext optional, used to populated clientContext property of lambda second parameter (context) contextOverwrite optional, a function that overwrites the context object. It can get and overwrite the values of the context (such as awsRequestId). lambdaLocal.setLogger(logger)

Those functions allow to access the winston logger used by lambda-local.

A lot of examples, especially used among Mocha, may be found in the test files over: here

Basic usage: Using Promises
const lambdaLocal = require('lambda-local');

var jsonPayload = {
    'key': 1,
    'another_key': "Some text"
}

lambdaLocal.execute({
    event: jsonPayload,
    lambdaPath: path.join(__dirname, 'path_to_index.js'),
    profilePath: '~/.aws/credentials',
    profileName: 'default',
    timeoutMs: 3000
}).then(function(done) {
    console.log(done);
}).catch(function(err) {
    console.log(err);
});
Basic usage: using callbacks
const lambdaLocal = require('lambda-local');

var jsonPayload = {
    'key': 1,
    'another_key': "Some text"
}

lambdaLocal.execute({
    event: jsonPayload,
    lambdaPath: path.join(__dirname, 'path_to_index.js'),
    profilePath: '~/.aws/credentials',
    profileName: 'default',
    timeoutMs: 3000,
    callback: function(err, data) {
        if (err) {
            console.log(err);
        } else {
            console.log(data);
        }
    },
    clientContext: JSON.stringify({clientId: 'xxxx'})
});
# Simple usage
lambda-local -l index.js -h handler -e examples/s3-put.js

# Input environment variables
lambda-local -l index.js -h handler -e examples/s3-put.js -E '{"key":"value","key2":"value2"}'
Running lambda functions as a HTTP Server (Amazon API Gateway payload format version 2.0.)

A simple way you can run lambda functions locally, without the need to create any special template files (like Serverless plugin and SAM requires), just adding the parameter --watch. It will raise a http server listening to the specified port (default is 8008). You can then call the lambda as mentionned here: https://docs.aws.amazon.com/lambda/latest/dg/urls-invocation.html

lambda-local -l examples/handler_gateway2.js -h handler --watch 8008

curl --request POST \
  --url http://localhost:8008/ \
  --header 'content-type: application/json' \
  --data '{
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
}'
{"message":"This is a response"}

You can also use the following format for your event, in order to avoid using the Amazon API Gateway format:

{
    "event": {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }
}

In this case, the event will be passed directly to the handler.

Event sample data are placed in examples folder - feel free to use the files in here, or create your own event data. Event data are just JSON objects exported:

// Sample event data
module.exports = {
    foo: "bar"
};

The context object has been sampled from what's visible when running an actual Lambda function on AWS, and the available documentation They may change the internals of this object, and Lambda-local does not guarantee that this will always be up-to-date with the actual context object.

As of version 2.0.0, lambda-local no longer packages AWS-SDK in its dependencies. To run a function that makes use of this module, make sure to install it as a dependency in your project.

This library is released under the MIT license.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4