Apex Node.js
Node.js module that makes AWS Lambda's user experience a little nicer.
export default 位(e => 'Hello World')
Installation
$ npm install --save apex.js
Features
- return promises
- return results
- actually report uncaught errors (Lambda does not)
Example
The following example fetches some urls and reports the response status of each. The context and callback are also passed, but are not shown here.
import axios from 'axios'
import 位 from 'apex.js'
import 'babel-polyfill'
export default 位(e => {
console.log('fetching %d urls', e.urls.length)
return Promise.all(e.urls.map(async (url) => {
console.log('fetching %s', url)
return {
status: (await axios.get(url)).status,
url
}
}))
})
Without this module it looks something like the following, as Lambda does not try/catch, and the Context provided has awkward method names that are not idiomatic, or you must use the callback.
import axios from 'axios'
import 'babel-polyfill'
// Vanilla Lambda function.
export default async (e, ctx, cb) => {
console.log('fetching %d urls', e.urls.length)
try {
const res = await Promise.all(e.urls.map(async (url) => {
console.log('fetching %s', url)
return {
status: (await axios.get(url)).status,
url
}
}))
// or ctx.succeed(res);
cb(null, res);
} catch (err) {
// or ctx.fail(err);
cb(err);
}
}
Contributors
Badges
tjholowaychuk.com 聽路聽 GitHub @tj 聽路聽 Twitter @tjholowaychuk