Serverless Framework (BETA)
Serverless is the application framework for building web, mobile and IoT applications exclusively on Amazon Web Services' Lambda and API Gateway. It's a command line interface that helps you build and maintain serverless apps across teams of any size. It's also completely extensible via Plugins. We believe AWS Lambda will be the focal point of the AWS cloud, and the Serverless Framework interprets AWS from Lambda's perspective.
The Framework and its related tools are maintained by a dedicated, full-time team. For updates, join our Mailing List. We work on this live in our Gitter Chatroom. Please join us, everyone is welcome :)
Also, we are hiring. If you are a developer and these tools/ideologies appeal to you and you want to work on these all day long, please send us a message.
- Run/test AWS Lambda functions locally, or remotely
- Auto-deploys, versions & aliases your Lambda functions
- Auto-deploys your REST API to AWS API Gateway
- Auto-deploys your Lambda events
- Support for multiple stages
- Support for multiple regions within stages
- Support for separate credentials per stage
- Manage & deploy AWS CloudFormation resources to each stage/region
- Project Variables allow staged/regional values in config files
- Project Templates reduce configuration
- Environment variable support
- Assign multiple endpoints and events to a function
- Interactive CLI dashboard to easily select and deploy functions and endpoints
- Optimize your Lambda functions for faster response times
- Support for API Gateway custom authorizers
- Project files can be published to npm
- 100% Extensible - Extend or modify the Framework and its operations via Plugins
- Powerful classes and methods for easy plugin development
- AWS best practices and optimizations built in
- A fantastic and welcoming community!
Install The Serverless Framework via npm: (requires Node V4)
npm install serverless -g
You can either install an existing project or create your own. We recommend starting out with the Serverless-Starter
serverless project install serverless-starter
Or you can create your own project
serverless project create
Refer to our documentation for more info. Enjoy!
Serverless Projects are shareable and installable. You can publish them to npm and install them via the Serverless Framework CLI by using
$ serverless project install <project-name>
- serverless-graphql - Official Serverless boilerplate to kick start your project
- serverless-starter - A simple boilerplate for new projects with a few architectural options
- serverless-graphql-blog - A blog boilerplate that leverages GraphQL in front of DynamoDB to offer a minimal REST API featuring only 1 endpoint
- serverless-authentication-boilerplate - A generic authentication boilerplate for Serverless framework
- sc5-serverless-boilerplate - A boilerplate for test driven development of REST endpoints
- [MoonMail] (https://github.com/microapps/MoonMail) - Build your own email marketing infrastructure using Lambda + SES
Serverless is composed of Plugins. A group of default Plugins ship with the Framework, and here are some others you can add to improve/help your workflow:
- Meta Sync - Securely sync your the variables in your project's
_meta/variables across your team.
- Offline - Emulate AWS Lambda and Api Gateway locally to speed up your development cycles.
- Hook Scripts - Easily create shell script hooks that are run whenever Serverless actions are executed.
- CORS - Adds support for CORS (Cross-origin resource sharing).
- Serve - Simulate API Gateway locally, so all function calls can be run via localhost.
- Webpack - Use Webpack to optimize your Serverless Node.js Functions.
- Serverless Client - Deploy and config a web client for your Serverless project to S3.
- Alerting - This Plugin adds Cloudwatch Alarms with SNS notifications for your Lambda functions.
- Optimizer - Optimizes your code for performance in Lambda. Supports coffeeify, babelify and other transforms
- CloudFormation Validator - Adds support for validating your CloudFormation template.
- Prune - Delete old versions of AWS lambdas from your account so that you don't exceed the code storage limit.
- Base-Path - Sets a base path for all API Gateway endpoints in a Component.
- Test - A Simple Integration Test Framework for Serverless.
- SNS Subscribe - This plugin easily subscribes your lambda functions to SNS notifications.
- JSHint - Detect errors and potential problems in your Lambda functions.
- ESLint - Detect errors and potential problems in your Lambda functions using eslint.
- Mocha - Enable test driven development by creating test cases when creating new functions
- Function-Package - Package your lambdas without deploying to AWS.
- Sentry - Automatically send errors and exceptions to Sentry.
- Auto-Prune - Delete old AWS Lambda versions.
We love our contributors! If you'd like to contribute to the project, feel free to submit a PR. But please keep in mind the following guidelines:
- Propose your changes before you start working on a PR. You can reach us by submitting a Github issue, or discuss it in the Gitter Chatroom. This is just to make sure that no one else is working on the same change, and to figure out the best way to solve the issue.
- If you're out of ideas, but still want to contribute, check out our Road Map. There's a lot we want to get done, and we'd love your help!
- Contributions are not just PRs! We'd be grateful for having you in our community, and if you could provide some support for new comers, that be great! You can also do that by answering Serverless related questions on Stackoverflow.
- You can also contribute by writing. Feel free to let us know if you want to publish a useful original guide in our docs (attributed to you, thank you!) that you feel will help the community.
These consultants use the Serverless Framework and can help you build your serverless projects.
- Added support for Node.js 6.10 runtime
- Fixed a problem with an outdated AWS-SDK being installed with the previous release
- Fixed a problem with loading of NPM modules as plugins in case an exception occurs
- Fixed an issue with the NPM being checked in using CRLF 🙄
- Fixed a problem with API Gateway not being able to test invoke Lambda functions using AWS_PROXY and ANY method
- Fixed deployment error on empty or invalid VPC configuration (issue #6)
- Use native AWS Lambda environment variables instead of injected ones (issue #5)
- Fixed a problem with API Gateway not being able to test invoke Lambda functions anymore
- Changed the way Serverless sets up scheduled events: Instead of creating one rule per function
it is now possible to create a single rule that triggers up to 5 Lambdas simultaneously. Simply
reuse the schedule name between your Lambda functions to make use of this feature.
- Due to some internal changes on how triggers are deployed, we recommend to delete your Lambda
stages and re-deploy everything after upgrading to this version.
- Plugins are automatically loaded from
node_modules folder. No more need to update
passthroughBehavior configuration in APIG endpoints
- Deprecated the use of
requestParameters in APIG endpoints. Use
integrationRequestParameters instead. This enables support of optional request parameters and
more flexibility in mapping integration request parameters to fixed values.
- Fixed creation of CloudWatch Events for scheduled Lambdas
- Added support for
- Merged various minor bug fixes from the official Serverless repo
- Last and final official version