New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

lamool

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lamool

Universal AWS Lambda runtime

  • 0.0.11
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

lamool - Universal AWS Lambda runtime

codecov

Features

  • Universal: you can execute lambda function on
    • nodejs (child_process)
    • browser (Web worker)
    • fallback to main thread
  • Offload workloads to AWS Lambda
  • AWS Lambda SDK API compatible

Benefits

  • Reduce time of CPU heavy processing
  • Off the main thread
  • Reduce cost of AWS
  • Reduce network traffic
  • Easy to build multi core applications
  • Easy to adopt introduce to existing applications using AWS Lambda
  • Realize edge/fog computing

Getting Started

Following code works in both Node.js and browser.

const { Lamool, funcToZip } = require('lamool');
const AWS = require('aws-sdk');
const Lambda = require('aws-sdk/clients/lambda');

AWS.config.region = 'us-east-1';
const lambda = new Lamool();
// const lambda = new Lambda({ apiVersion: '2015-03-31' });
/** ↑ Lamool has AWS Lambda compatible API
 * So you can replace AWS Lambda instance to Lamool (and vice versa) without any code changing */

// const lambda = new Lamool(new Lambda({ apiVersion: '2015-03-31' }));
/** ↑ You can pass AWS Lambda instance to Lamool constructor
 * to offload functions to AWS Lambda according to user defined strategy */

(async () => {
  // This is a function according to AWS Lambda signature
  const lambdaFunction = (event, context, cb) => {
    cb(null, `key1: ${event.key1}`);
  };

  const FunctionName = 'MyFunction';
  const createFunctionParams = {
    Code: { ZipFile: await funcToZip(lambdaFunction) }, // Upload lambda function as zip
    FunctionName, // The name of the Lambda function
    Handler: 'index.handler', // The name of the method within your code that Lambda calls to execute your function
    // If you upload function via funcToZip, Handler must be 'index.handler'
    Role: 'arn:aws:iam::000000000000:role/SomeRole', // The Amazon Resource Name (ARN) of the function's execution role.
    Runtime: 'nodejs8.10' // The runtime version for the function
  };

  const invokeParams = {
    FunctionName, // The name of the Lambda function.
    Payload: JSON.stringify({ key1: 'v1' }) // JSON that you want to provide to your Lambda function as input
  };

  // Creates a new Lambda function
  lambda.createFunction(createFunctionParams, (err, data) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log('function creating is succeed:', data);

    // Invokes a Lambda function
    lambda.invoke(invokeParams, (err, data) => {
      if (err) {
        console.error(err);
        return;
      }
      if (!data.Payload) {
        console.error('payload is empty');
      }

      // data.Payload is the JSON representation of the object returned by the Lambda function
      const payload = JSON.parse(data.Payload);

      // Indicates whether an error occurred while executing the Lambda function.
      // If an error occurred this field will have one of two values; Handled or Unhandled
      if (data.FunctionError) {
        console.error(`${data.FunctionError} error type:${payload.errorType} message:${payload.error}`);
      }
      console.log('result:', payload);

      // Lamool has terminate() that is not compatible with AWS Lambda
      // for terminate child processes or web workers
      if (lambda.terminate) {
        lambda.terminate();
      }
    });
  });
})();

You can try the above code by executing the following command.

$ git clone https://github.com/mpppk/lamool
$ cd lamool/examples/node
$ npm install
$ node getting_tarted.js

installation

$ npm install lamool

Keywords

FAQs

Package last updated on 02 Nov 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc