Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/apex/apex
Old apex/apex
https://github.com/apex/apex
Last synced: 4 days ago
JSON representation
Old apex/apex
- Host: GitHub
- URL: https://github.com/apex/apex
- Owner: apex
- License: mit
- Archived: true
- Created: 2020-09-03T09:13:32.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2020-09-03T09:15:16.000Z (about 4 years ago)
- Last Synced: 2024-08-01T18:26:47.844Z (3 months ago)
- Language: Go
- Size: 2.22 MB
- Stars: 31
- Watchers: 9
- Forks: 56
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- Changelog: History.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome - apex - Build, deploy, and manage AWS Lambda functions with ease. (Go)
- starred-awesome - apex - Build, deploy, and manage AWS Lambda functions with ease (with Go support!). (Go)
README
# No longer maintained
This software is no longer being maintainted and should not be chosen for new projects. See this [issue](https://github.com/apex/apex/issues/932) for more information
![Apex Serverless Architecture](assets/title.png)
Apex lets you build, deploy, and manage [AWS Lambda](https://aws.amazon.com/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](https://github.com/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](https://github.com/apex/apex/releases).
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
- ClojureExample projects for all supported runtimes can be found in [_examples](_examples) directory.
## 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.json` and `function.ENV.json` files
- 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](https://opencollective.com/apex#sponsor).
## Backers
Love our work and community? [Become a backer](https://opencollective.com/apex).
## 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](http://apex.run) for more information.
## Links
- [Website](http://apex.run)
- [Medium](https://medium.com/@tjholowaychuk)
- [Slack](https://chat.apex.sh/)---
[![Build Status](https://semaphoreci.com/api/v1/projects/d27ff350-b9c5-4d99-96e5-64b1afb441c5/649392/badge.svg)](https://semaphoreci.com/tj/apex)
[![Slack Status](https://apex-slackin.herokuapp.com/badge.svg)](https://apex-slackin.herokuapp.com/)
[![GoDoc](https://godoc.org/github.com/apex/apex?status.svg)](https://godoc.org/github.com/apex/apex)
![](https://img.shields.io/badge/license-MIT-blue.svg)
![](https://img.shields.io/badge/status-stable-green.svg) [![OpenCollective](https://opencollective.com/apex/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/apex/sponsors/badge.svg)](#sponsors)