Skip to content

Maestro is a framework for quickly bootstrapping serverless orchestration workflows with AWS Step Functions

License

Notifications You must be signed in to change notification settings

maestro-framework/maestro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maestro full logo with text

shields.io npm version badge shields.io npm license badge shields.io github closed pull requests badge shields.io custom website link badge

Maestro is a framework that enables rapid iteration for serverless orchestration. The rise of serverless architectures and FaaS offerings such as AWS Lambda has revolutionized how companies are developing modern apps. The need for an orchestration layer over these architectures has brought about services such as AWS Step Functions. However, deploying apps that use Step Functions can be tedious and error-prone. Maestro prioritizes speed and developer productivity by automating this process so that the developer’s focus stays on developing their application's business logic.

Usage

To use, you must have the AWS CLI installed and set up.

  1. Install the npm package globally (sudo npm -g install maestro)
  2. Configure your AWS account number and region with (maestro config)
  3. Run maestro get-templates to get the default project templates provided by Maestro
  4. Create a new project with maestro new
  5. Hack away on your definition.asl.json state machine definition file and the lambdas in the lambdas/ directory
  6. Run maestro deploy in the top level directory of your Maestro project to deploy it to AWS
  7. To tear down state machine and associated resources, run maestro teardown
    • This prompts you for confirmation. If you prefer to run it without a confirmation, provide a -f or --force flag
    • This doesn't automatically tear down the roles that were created upon deployment. To do that, provide a --roles flag with a comma-separated-list of role names to tear down (for example, --roles=roleName1,roleName2 OR --roles roleName1,roleName2)
  8. Read the man pages and get up to speed! (man maestro) i. Alternatively, take advantage of our helpful maestro help command! (e.g. maestro help deploy or maestro deploy --help)

Commands

Command Description
maestro new

This command creates a new Maestro project with the given project name. When maestro new is executed, the user is prompted with a list of all the templates to base their new project off of.

If the user simply presses <return>at the prompt or enters invalid input, the new project is created without the influence of a template.

maestro deploy

This command must be executed at the root of your Maestro project. It will deploy both the state machine as defined in definition.asl.json and all lambda functions defined in the lambdas/ directory. If you do not have the necessary Maestro IAM roles, running this command will automatically create them for you as part of the deployment.

Typical deployment time is a lightning-fast 3 seconds.

maestro teardown

Executing this command with your working directory being the root of some Maestro project will tear down the associated resources from AWS, which are as follows:

  • All AWS Lambdas uploaded from the project-local lambdas/ directory.
  • The AWS Step Functions state machine created from the project-localdefinition.asl.json definition file.
  • Any AWS IAM roles specified via an optional flag.
maestro help

Display help information about Maestro or a Maestro command.

maestro config

The maestro configcommand should be the first command run after installing Maestro. Any Maestro deployment or teardown depends on the account information configured by this command.

maestro get-templates

Fetches the Maestro default templates from git and installs them on the user’s local machine.

Dependencies

  • Node.js 12.x or greater
  • npm packages (installed during npm install):
    • minimist
    • aws-sdk
  • zip command line utility
  • AWS CLI
  • git version control system