Apex v0.6.0

TJ Holowaychuk
3 min readFeb 6, 2016

--

Pretty small update this time, most of the work done was refactoring some internals, however we have some additional features as well!

New Go runtime

The Go runtime was previously in the apex/apex repository; we’ve moved it to https://github.com/apex/go-apex and added support for a number of source inputs:

  • Arbitrary JSON
  • CloudWatch Logs
  • Cognito
  • Kinesis
  • Dynamo
  • S3
  • SNS
  • SES

New Node.js runtime

Node.js runs natively on Lambda, however the AWS team chose to use some unconventional names for the context methods, so we’ve provided a small wrapper to make Lambda a little nicer.

With this module you can return a promise, or any other value for the output of the Lambda function. Here’s the Hello World:

export default λ(e => 'Hello World')

You can find this module here: https://github.com/apex/node-apex or in npm as “apex.js”.

Documentation overhaul

We recently moved our documentation from the GitHub wiki to markdown, and inline the docs into the release binaries. We also now pipe the `apex docs` output to a pager when stdout is a TTY, letting you easily navigate and search for keywords.

Website

The new website http://apex.run is powered by the aforementioned markdown docs. For now it’s pretty much just reference, we’ll have guides and a better description of the project at some point!

New list command

Apex list didn’t have very useful output before, but now you get the role, version, and configuration:

$ apex list --tfvars
apex_function_lowercase=”arn:aws:lambda:us-west-2:293503197324:function:testing_lowercase”
apex_function_uppercase=”arn:aws:lambda:us-west-2:293503197324:function:testing_uppercase”

Multi-arg command normalization

Both the `metrics` and `logs` commands now output all functions by default, with an optional list of function names. Both commands have a ` — start <duration>` flag to specify how far back in time to look for results.

Logs are prefixed with their group name:

And metrics have a new look to match `apex list`:

Env injection

We now have support for Node.js and Python environment variables, these are injected into the script at build time. Golang inherits the environment via the shim, so shimmed languages receive them as well.

AWS credential improvements

Some smaller but notable changes include the addition of the `-p, — profile` flag, and loading of the AWS region from ~/.aws/config.

Invoke without event

Previously you had to supply an event via stdin, now you can run `apex invoke <name>` without any input to provide `{}`.

Run `apex upgrade` to get 0.6.0! For the full changelog visit https://github.com/apex/apex/releases/tag/v0.6.0

--

--