lambda-runtime

0.2.5 • Public • Published

Lambda Runtime

lambda-runtime

Codeship Status for RebelMail/lambda-runtime

Simple package to allow versioning in AWS Lambdas as well as basic fallback.

Why?

There is no tagging in AWS Lambdas which makes it difficult to have multiple versions of a Lambda running. Think of backwards compatibility with some clients. Also, in the case of a Lambda going down in one AZ you have the ability to call other AZ's until one runs.

Example

 
var LambdaRouter = require('lambda-runtime');
var lambda = new LambdaRouter(awsKey, awsSecret);
 
var supportedLambdas = {
  "2015-02-01": "0.0.*",
  "2016-09-01": "1.3.*"
};
 
var version = supportedLambdas[obj.version];
 
var lambdaName = "magic";
var env = process.env.NODE_ENV;
var payload = JSON.stringify({});
 
lambda.invokeAsync(lambdaName, env, version, ['us-east-1', 'us-west-2'], payload, function(err, data) {
  console.log(err, data);
});
 

Specifications

For the package to perform its function effectively, your lambda names must follow this guideline:

NAME-WITH-WHATEVER-SIZE-YOU-NEED-IT-**ENV**-**MAJOR**-**MINOR**-**PATCH**

Documentation

LambdaRuntime(awsKey, awsSecret)

Returns a LambdaRuntime object.

isValidLambda(lambda, functionName, env, version)

Function used to compare against official Lambdas

  • lambda - Object must have FunctionName defined.
  • functionName - Name to be compared with FunctionName
  • env - Env to be compared with FunctionName
  • version - Version to be comprared with FunctionName

Returns true if the Lambda is compatible with the one being compared with.

latestLambda(lambdas)

  • lambdas - Array of Lambda names. Ex -> ['name-production-0-2-1', 'name-production-0-1-2'];

Returns the lastest definition of the Lambda.

findLatestLambda(functionName, env, version, region, callback)

  • functionName - Lambda name to look for.
  • env - Env to look for.
  • version - Semantic version that should be matched Ex -> (^0.0.x)
  • region - Region to look for.
  • callback(err, lambda) - Will be called with the latest version found.

invokeFallback(lambdas, payload, callback)

  • lambdas - Array of lambdas. Ex -> [null, {name: name-production-0-1-2, region: us-west-2}, {name: name-production-0-1-1, region: us-east-1}]
  • payload - Payload to be invoked.
  • callback(err, result) - If no Errors happened, result can be false or a Lambda object. False implies that no Lambda was accepted.

Once 1 Lambda is successfully executed, the callback will be triggered.

invokeAsync(name, env, version, regions, payload, callback)

  • name - Name of lambda.
  • env - Env of lambda.
  • version - Semantic version to compare against.
  • payload - Payload for lambda.
  • callback(err, lambda) - If no Errors happened, result can be false or a Lambda object. False implies that no Lambda was accepted.

MIT

Enjoy

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.2.5
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.2.5
    0
  • 0.2.4
    0

Package Sidebar

Install

npm i lambda-runtime

Weekly Downloads

0

Version

0.2.5

License

MIT

Last publish

Collaborators

  • elbuo8