npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lambdoku

v1.3.4

Published

Heroku-like experience with AWS Lambdas.

Readme

Lambdoku

Heroku-like experience with AWS Lambdas.

Features

Connecting current directory with lambda (like heroku git:remote)

$ lambdoku init <ARN-of-your-lambda-function>

this allows you to omit the -a param for all commands below

Simple push of the zip/jar file

$ lambdoku push hello.zip

Simplified environment variables management (heroku config)

$ lambdoku config:set ONE=1 TWO=2

$ lambdoku config
ONE='1'
TWO='2'

$ lambdoku config:get ONE
ONE='1'

Simplified releases management (heroku releases)

$ lambdoku releases
22 | Setting env variables AA | 2016-11-26T21:12:46.894+0000
21 | Unsetting env variables XY | 2016-11-26T21:10:04.302+0000
20 | Setting env variables BB,XY | 2016-11-26T20:57:57.340+0000
...

$ lambdoku rollback 18

$ lambdoku releases
23 | Rolling back to version 18 | 2016-11-26T21:35:45.952+0000
22 | Setting env variables AA | 2016-11-26T21:12:46.894+0000
21 | Unsetting env variables XY | 2016-11-26T21:10:04.302+0000
20 | Setting env variables BB,XY | 2016-11-26T20:57:57.340+0000
...

in the example :point_up: both code and configuration is rolled back from version 18.

Pipelines (heroku pipelines)

(actually the main reason why lambdoku was created)

$ lambdoku init lambdaDev

$ lambdoku pipeline:add lambdaStage

$ lambdoku pipeline:add lambdaProd -a lambdaStage

$ lambdoku pipeline
lambdaStage

$ lambdoku pipeline:promote

now lambdaDev and lambdaStage have the same codebase. lambdaStage can be promoted to lambdaProd with command lambdoku downstream:promote -a lambdaStage.

Logs

To get 100 latest log lines from all lambda invocations:

$ lambdoku logs -n 100

To follow logs produced by all lambda invocations:

$ lambdoku logs -f 

Invoking lambda

To invoke lambda to test if it works, you can use:

lambdoku invoke

You can also pass parameters to the function invocation:

lambdoku invoke '{"param1": "value1" ... }'

Installation

  1. Prerequisite: AWS Environment variables

    • Set required variables:
      • AWS_ACCESS_KEY_ID
      • AWS_SECRET_ACCESS_KEY
      • AWS_DEFAULT_REGION
    • ... or use the ~/.aws/config file to configure aws-sdk by setting AWS_SDK_LOAD_CONFIG env variable to something truthy
  2. Prerequisite: Node and npm (ES6 support required)

    • On OS X with homebrew: brew update && brew install node
  3. Then, simply:

    npm install -g lambdoku

Internals (aka 'how it works?')

  • it's simply an abstraction layer over AWS Lambda API effectively invoking aws-sdk
  • each change applied to lambda is finished with lambda version publication
  • the rollback and promote operations retrieve code from AWS and uploads it in place of current one
  • pipelines use special env variable (please :pray: don't use it :)) DOWNSTREAM_LAMBDAS to the dowstreams

Known issues

Due to the nature of AWS Lambda API most of the operations can't be considered atomic, like:

  • the change in configuration has to first retrieve current configuration - which may be change in the meantime
  • the rollback can be infected with change done in configuration in the 'meantime'
  • the pipelines promote can be infected by changes done at the same time on downstream