No longer maintained This software is no longer being maintainted and should not be chosen for new projects. See this issue for more information Apex lets you build, deploy, and…
No longer maintained
This software is no longer being maintainted and should not be chosen for new projects. See this issue for more information

Apex lets you build, deploy, and manage AWS Lambda functions with ease. With Apex you can use languages that are not natively supported by AWS Lambda through the use of a Node.js shim injected into the build. A variety of workflow related tooling is provided for testing functions, rolling back deploys, viewing metrics, tailing logs, hooking into the build system and more.
This project is designed for event-driven pipelines as it does not abstract away FaaS (functions as a service). If you are building web applications, APIs, or sites, consider using Apex Up, which provides a more out-of-the-box experience for these use-cases.
Installation
On macOS, Linux, or OpenBSD run the following:
curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh
Note that you may need to run the sudo version below, or alternatively chown /usr/local:
curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sudo sh
On Windows download binary.
After downloading, rename binary file 'apex.exe', then add to PATH.
If already installed, upgrade with:
apex upgrade
Runtimes
Currently supports:
- Node.js
- Golang
- Python
- Ruby
- Java
- Rust
- Clojure
Features
- Supports languages Lambda does not natively support via shim
- Binary install (install apex quickly for continuous deployment in CI etc)
- Hook support for running commands (transpile code, lint, dependency management, etc)
- Batteries included but optional (opt-in to higher level abstractions)
- Environment variable population via command-line, file, or inline config
- Idempotent deployments (checksums skip already-deployed code)
- Multiple environments via
project.ENV.jsonandfunction.ENV.jsonfiles - Configuration inheritance and overrides
- Command-line function invocation with JSON streams
- Command & function name autocompletion
- Function name globbing (ex:
apex deploy api_*) - Transparently generates a zip for your deploy
- Project bootstrapping with optional Terraform support
- Function metrics and cost analysis
- Ignore deploying files with .apexignore
- Function rollback support
- Tail function logs
- Concurrency for quick deploys
- Dry-run to preview changes
- VPC support
- Multiple region support
- Lambda@Edge support
Sponsors
Does your company use Apex? Help keep the project bug-free and feature rich by sponsoring the project.
Backers
Love our work and community? Become a backer.
Example
Apex projects are made up of a project.json configuration file, and zero or more Lambda functions defined in the "functions" directory. Here's an example file structure:
project.json
functions
├── bar
│ ├── function.json
│ └── index.js
└── foo
├── function.json
└── index.js
The project.json file defines project level configuration that applies to all functions, and defines dependencies. For this simple example the following will do:
json
{
"name": "example",
"description": "Example project"
}
Each function uses a function.json configuration file to define function-specific properties such as the runtime, amount of memory allocated, and timeout. This file is completely optional, as you can specify defaults in your project.json file. For example:
json
{
"name": "bar",
"description": "Node.js example function",
"runtime": "nodejs4.3",
"memory": 128,
"timeout": 5,
"role": "arn:aws:iam::293503197324:role/lambda"
}
Now the directory structure for your project would be:
project.json
functions
├── bar
│ └── index.js
└── foo
└── index.js
Finally the source for the functions themselves look like this in Node.js:
js
console.log('start bar')
exports.handle = function(e, ctx) {
ctx.succeed({ hello: e.name })
}
Apex operates at the project level, but many commands allow you to specify specific functions. For example you may deploy the entire project with a single command:
$ apex deploy
Or whitelist functions to deploy:
$ apex deploy foo bar
Invoke it!
$ echo '{ "name": "Tobi" }' | apex invoke bar
{ "hello": "Tobi" }
See the Documentation for more information.
Links
---



  
-
up
Deploy infinitely scalable serverless apps, apis, and sites in seconds to AWS.
Go ★ 8.8k 2y agoExplain → -
gh-polls
Polls for user feedback in GitHub issues
Go ★ 1.8k 6y agoExplain → -
log
Structured logging package for Go.
Go ★ 1.4k 2y agoExplain → -
gateway
Drop-in replacement for Go net/http when running in AWS Lambda & API Gateway
Go ★ 651 3y agoExplain → -
apex-ui
Apex monochrome Atom theme UI.
CSS ★ 408 8y agoExplain → -
up-examples
Example apps, apis, and sites for Up.
HTML ★ 392 6y agoExplain → -
static
The static site anti-framework – general-purpose library, purpose-built commands for various domains
Go ★ 291 6y agoExplain → -
apex-go
Golang runtime for Apex/Lambda.
Go ★ 291 8y agoExplain → -
node-apex
Node.js module that makes AWS Lambda's user experience a little nicer using promises.
JavaScript ★ 278 9y agoExplain → -
rpc
Simple RPC style APIs with generated clients & servers.
Go ★ 216 5y agoExplain → -
actions
GitHub Actions
Go ★ 174 2y agoExplain → -
gui
GitHub readme UI components
CSS ★ 134 7y agoExplain → -
apex-syntax
Apex monochrome Atom theme syntax.
CSS ★ 125 8y agoExplain → -
apex-shell
Interactive shell for executing commands in AWS Lambda containers.
Go ★ 122 10y agoExplain → -
capture
Lambda function to capture a URL as PNG, JPG, or GIF using PhantomJS
JavaScript ★ 109 10y agoExplain → -
httpstat
Higher level HTTP tracing for Go
Go ★ 93 6y agoExplain → -
js
Go packages for JavaScript WASM interoperability in the browser
Go ★ 90 7y agoExplain → -
apex-ui-slim
Apex monochrome Atom theme UI (slim variant)
CSS ★ 73 8y agoExplain → -
svg_to_png
Lambda function to convert SVG to PNG using PhantomJS
JavaScript ★ 71 10y agoExplain → -
logs
Apex Logs client for Go.
Go ★ 59 5y agoExplain → -
up.js
Up application companion library for Node and the browser
JavaScript ★ 58 8y agoExplain → -
apex.run ▣
Apex website
HTML ★ 57 5y agoExplain → -
logs-cloudwatch
Send your AWS CloudWatch Logs to Apex Logs.
Go ★ 39 5y agoExplain → -
logs-js
Apex Logs client for Node, Deno, and the browser
TypeScript ★ 38 5y agoExplain → -
httplog
Go http logger for apex/log.
Go ★ 35 6y agoExplain → -
apex ▣
Old apex/apex
Go ★ 34 5y agoExplain → -
roadmap
Roadmap for Apex Software products
★ 32 6y agoExplain → -
parsers
Performant Go log format parsers.
Go ★ 32 5y agoExplain → -
invoke
Lambda invocation helper functions for Go.
Go ★ 27 5y agoExplain → -
logs-winston
Apex Logs integration for the Node.js Winston logging framework
JavaScript ★ 23 5y agoExplain →
No repos match these filters.