apex-lambda

λ improves AWS Lambda's UX with promises

Usage no npm install needed!

<script type="module">
  import apexLambda from 'https://cdn.skypack.dev/apex-lambda';
</script>

README

Apex Node.js

Node.js module that makes AWS Lambda's user experience a little nicer using promises.

Example

The following example fetches some urls and reports the response status of each. The context is also passed, but is not shown here.

import λ from 'apex-lambda'
import axios from 'axios'
import 'babel-polyfill'

export default λ(e => {
  console.log('fetching %d urls', e.urls.length)
  return Promise.all(e.urls.map(async function(url){
    console.log('fetching %s', url)
    return {
      status: (await axios.get(url)).status,
      url
    }
  }))
})

Without apex-node it looks something like the following, as Lambda does not try/catch, and the Context provided has awkward method names that are not idiomatic.

import axios from 'axios'
import 'babel-polyfill'

// Vanilla Lambda function.
export default async function(e, ctx) {
  console.log('fetching %d urls', e.urls.length)

  try {
    const res = await Promise.all(e.urls.map(async function(url){
      console.log('fetching %s', url)
      return {
        status: (await axios.get(url)).status,
        url
      }
    }))

    ctx.succeed(res)
  } catch (err) {
    ctx.fail(err)
  }
}

Contributors

Badges


tjholowaychuk.com  ·  GitHub @tj  ·  Twitter @tjholowaychuk