Permalink
366 lines (314 sloc) 45.8 KB

Serverless Application Framework AWS Lambda API Gateway

serverless Build Status npm version Coverage Status gitter dependencies license

WebsiteDocsNewsletterGitterForumMeetupsTwitterWe're Hiring

The Serverless Framework – Build applications comprised of microservices that run in response to events, auto-scale for you, and only charge you when they run. This lowers the total cost of maintaining your apps, enabling you to build more logic, faster.

The Framework uses new event-driven compute services, like AWS Lambda, Google CloudFunctions, and more. It's a command-line tool, providing scaffolding, workflow automation and best practices for developing and deploying your serverless architecture. It's also completely extensible via plugins.

Serverless is an MIT open-source project, actively maintained by a full-time, venture-backed team.

Watch the video guide here.

Serverless Framework Feedback Survey

Contents

Quick Start

Watch the video guide here or follow the steps below to create and deploy your first serverless microservice in minutes.

  1. Install via npm:
npm install -g serverless
  1. Set-up your Provider Credentials. Watch the video on setting up credentials

  2. Create a Service:

You can create a new service or install existing services.

# Create a new Serverless Service/Project
serverless create --template aws-nodejs --path my-service
# Change into the newly created directory
cd my-service
  1. Deploy a Service:

Use this when you have made changes to your Functions, Events or Resources in serverless.yml or you simply want to deploy all changes within your Service at the same time.

serverless deploy -v
  1. Deploy the Function:

Use this to quickly upload and overwrite your AWS Lambda code on AWS, allowing you to develop faster.

serverless deploy function -f hello
  1. Invoke the Function:

Invokes an AWS Lambda Function on AWS and returns logs.

serverless invoke -f hello -l
  1. Fetch the Function Logs:

Open up a separate tab in your console and stream all logs for a specific Function using this command.

serverless logs -f hello -t
  1. Remove the Service:

Removes all Functions, Events and Resources from your AWS account.

serverless remove

How to Install a Service:

This is a convenience method to install a pre-made Serverless Service locally by downloading the Github repo and unzipping it. Services are listed below.

serverless install -u https://github.com/your-url-to-the-serverless-service

Check out the Serverless Framework Guide for more information.

Services (V1.0)

The following are services you can instantly install and use by running serverless install --url <service-github-url>

Note: the serverless install command will only work on V1.0 or later.

Features

  • Supports Node.js, Python, Java, Scala, C#, F#, Groovy, Kotlin, PHP & Swift.
  • Manages the lifecycle of your serverless architecture (build, deploy, update, delete).
  • Safely deploy functions, events and their required resources together via provider resource managers (e.g., AWS CloudFormation).
  • Functions can be grouped ("serverless services") for easy management of code, resources & processes, across large projects & teams.
  • Minimal configuration and scaffolding.
  • Built-in support for multiple stages.
  • Optimized for CI/CD workflows.
  • Loaded with automation, optimization and best practices.
  • 100% Extensible: Extend or modify the Framework and its operations via Plugins.
  • An ecosystem of serverless services and plugins.
  • A passionate and welcoming community!

Plugins (V1.0)

Use these plugins to extend or overwrite the Framework's functionality.

Add a plugin to this list

Plugin Author
Raml Serverless
Serverless plugin to work with RAML API spec documents
andrewcurioso
Serverless Alexa Plugin
Serverless plugin to support Alexa Lambda events
rajington
Serverless Api Stage
Serverless API Stage plugin, enables stage variables and logging for AWS API Gateway.
leftclickben
Serverless Apig S3
Serve static front-end content from S3 via the API Gatewy and deploy client bundle to S3.
sdd
Serverless Apigateway Plugin
Configure the AWS api gateway: Binary support, Headers and Body template mappings
GFG
Serverless Apigw Binary
Plugin to enable binary support in AWS API Gateway.
maciejtreder
Serverless Apigwy Binary
Serverless plugin for configuring API Gateway to return binary responses
ryanmurakami
Serverless Aws Alias
This plugin enables use of AWS aliases on Lambda functions.
HyperBrain
Serverless Aws Documentation
Serverless plugin to add documentation and models to the serverless generated API Gateway
9cookies
Serverless Build Plugin
A Node.js focused build plugin for serverless.
nfour
Serverless Cf Vars
Enables use of AWS pseudo functions and Fn::Sub string substitution
kabo
Serverless Cljs Plugin
Enables Clojurescript as an implementation language for Lambda handlers
nervous-systems
Serverless Coffeescript
A Serverless plugin to compile your CoffeeScript into JavaScript at deployment
duanefields
Serverless Command Line Event Args
This module is Serverless Framework plugin. Event JSON passes to your Lambda function in commandline.
horike37
Serverless Crypt
Securing the secrets on Serverless Framework by AWS KMS encryption.
marcy-terui
Serverless Custom Packaging Plugin
Plugin to package your sourcecode using a custom target path inside the zip.
hypoport
Serverless Dir Config Plugin
EXPERIMENTAL - Serverless plugin to load function and resource definitions from a directory.
economysizegeek
Serverless Domain Manager
Serverless plugin for managing custom domains with API Gateways.
amplify-education
Serverless Dotenv
Fetch environment variables and write it to a .env file
Jimdo
Serverless Dotnet
A serverless plugin to run 'dotnet' commands as part of the deploy process
fruffin
Serverless Dynalite
Run dynalite locally (no JVM, all JS) to simulate DynamoDB. Watch serverless.yml for table config updates.
sdd
Serverless Dynamodb Autoscaling
Configure Amazon DynamoDB's native Auto Scaling for your table capacities.
sbstjn
Serverless Dynamodb Local
Serverless Dynamodb Local Plugin - Allows to run dynamodb locally for serverless
99xt
Serverless Dynamodb Ttl
Configure DynamoDB TTL in serverless.yml (until CloudFormation supports this).
Jimdo
Serverless Enable Api Logs
Enables Coudwatch logging for API Gateway events
paulSambolin
Serverless Env Generator
Manage environment variables with YAML and load them with dotenv. Supports variable encryption with KMS, multiple stages and custom profiles.
DieProduktMacher
Serverless Event Constant Inputs
Allows you to add constant inputs to events in Serverless 1.0. For more info see constant values in Cloudwatch
dittto
Serverless Export Env
Export environment variables into a .env file with automatic AWS CloudFormation reference resolution.
arabold
Serverless Gulp
A thin task wrapper around @goserverless that allows you to automate build, test and deploy tasks using gulp
rhythminme
Serverless Hooks Plugin
Run arbitrary commands on any lifecycle event in serverless
uswitch
Serverless Jest Plugin
A Serverless Plugin for the Serverless Framework which adds support for test-driven development using Jest
SC5
Serverless Kms Secrets
Allows to easily encrypt and decrypt secrets using KMS from the serverless CLI
SC5
Serverless Kubeless
Serverless plugin for deploying functions to Kubeless.
serverless
Serverless Local Dev Server
Speeds up development of Alexa Skills, Chatbots and APIs by exposing your functions as local HTTP endpoints and mapping received events.
DieProduktMacher
Serverless Log Forwarding
Serverless plugin for forwarding CloudWatch logs to another Lambda function.
amplify-education
Serverless Mocha Plugin
A Serverless Plugin for the Serverless Framework which adds support for test-driven development using Mocha
SC5
Serverless Nested Stack
A plugin to Workaround for Cloudformation 200 resource limit
jagdish-176
Serverless Offline
Emulate AWS λ and API Gateway locally when developing your Serverless project
dherault
Serverless Offline Scheduler
Runs scheduled functions offline while integrating with serverless-offline
ajmath
Serverless Package Python Functions
Packaging Python Lambda functions with only the dependencies/requirements they need.
ubaniabalogun
Serverless Parameters
Add parameters to the generated cloudformation templates
svdgraaf
Serverless Plugin Aws Alerts
A Serverless plugin to easily add CloudWatch alarms to functions
ACloudGuru
Serverless Plugin Aws Resolvers
Resolves variables from ESS, RDS, or Kinesis for serverless services
DopplerLabs
Serverless Plugin Bespoken
Creates a local server and a proxy so you don't have to deploy anytime you want to test your code
bespoken
Serverless Plugin Bind Deployment Id
A Serverless plugin to bind the randomly generated deployment resource to your custom resources
jacob-meacham
Serverless Plugin Browserifier
Reduce the size and speed up your Node.js based lambda's using browserify.
digitalmaas
Serverless Plugin Browserify
Speed up your node based lambda's
doapp-ryanp
Serverless Plugin Cfauthorizer
This plugin allows you to define your own API Gateway Authorizers as the Serverless CloudFormation resources and apply them to HTTP endpoints.
SC5
Serverless Plugin Cloudwatch Sumologic
Plugin which auto-subscribes a log delivery lambda function to lambda log groups created by serverless
ACloudGuru
Serverless Plugin Common Excludes
Adds commonly excluded files to package.excludes
dougmoscrop
Serverless Plugin Custom Domain
Reliably sets a BasePathMapping to an API Gateway Custom Domain
dougmoscrop
Serverless Plugin Deploy Environment
Plugin to manage deployment environment across stages
DopplerLabs
Serverless Plugin Diff
Compares your local AWS CloudFormation templates against deployed ones.
nicka
Serverless Plugin Elastic Beanstalk
A serverless plugin to deploy applications to AWS ElasticBeanstalk.
rawphp
Serverless Plugin Encode Env Var Objects
Serverless plugin to encode any environment variable objects.
yonomi
Serverless Plugin External Sns Events
Add ability for functions to use existing or external SNS topics as an event source
silvermine
Serverless Plugin Git Variables
A Serverless plugin to expose git variables (branch name, HEAD description, full commit hash) to your serverless services
jacob-meacham
Serverless Plugin Graphiql
A Serverless plugin to run a local http server for graphiql and your graphql handler
bencooling
Serverless Plugin Include Dependencies
This is a Serverless plugin that should make your deployed functions smaller.
dougmoscrop
Serverless Plugin Iopipe
See inside your Lambda functions with high fidelity metrics and monitoring.
iopipe
Serverless Plugin Lambda Dead Letter
A Serverless plugin that can configure a lambda with a dead letter queue or topic
gmetzker
Serverless Plugin Log Subscription
Adds a CloudWatch LogSubscription for functions
dougmoscrop
Serverless Plugin Multiple Responses
Enable multiple content-types for Response template
silvermine
Serverless Plugin Offline Kinesis Events
Plugin that works with serverless-offline to allow offline testing of serverless functions that are triggered by Kinesis events.
DopplerLabs
Serverless Plugin Optimize
Bundle with Browserify, transpile with Babel to ES5 and minify with Uglify your Serverless functions.
FidelLimited
Serverless Plugin Package Dotenv File
A Serverless plugin to copy a .env file into the serverless package
ACloudGuru
Serverless Plugin Scripts
Add scripting capabilities to the Serverless Framework
mvila
Serverless Plugin Select
Select which functions are to be deployed based on region and stage.
FidelLimited
Serverless Plugin Simulate
Simulate AWS Lambda and API Gateway locally using Docker
gertjvr
Serverless Plugin Split Stacks
Migrate certain resources to nested stacks
dougmoscrop
Serverless Plugin Stack Config
A serverless plugin to manage configurations for a stack across micro-services.
rawphp
Serverless Plugin Stack Outputs
Displays stack outputs for your serverless stacks when sls info is ran
svdgraaf
Serverless Plugin Stage Variables
Add stage variables for Serverless 1.x to ApiGateway, so you can use variables in your Lambda's
svdgraaf
Serverless Plugin Subscription Filter
A serverless plugin to register AWS CloudWatchLogs subscription filter
tsub
Serverless Plugin Typescript
Serverless plugin for zero-config Typescript support.
graphcool
Serverless Plugin Warmup
Keep your lambdas warm during Winter.
FidelLimited
Serverless Plugin Webpack
A serverless plugin to automatically bundle your functions individually with webpack
goldwasserexchange
Serverless Plugin Write Env Vars
Write environment variables out to a file that is compatible with dotenv
silvermine
Serverless Prune Plugin
Deletes old versions of functions from AWS, preserving recent and aliased versions
claygregory
Serverless Pseudo Parameters
Use ${AWS::AccountId} and other cloudformation pseudo parameters in your serverless.yml values
svdgraaf
Serverless Python Individually
A serverless framework plugin to install multiple lambda functions written in python
cfchou
Serverless Python Requirements
Serverless plugin to bundle Python packages
UnitedIncome
Serverless Resources Env
After Deploy, this plugin fetches cloudformation resource identifiers and sets them on AWS lambdas, and creates local .-env file
rurri
Serverless Run Function Plugin
Run serverless function locally
lithin
Serverless S3 Remover
A serverless plugin to make s3 buckets empty before deleting cloudformation stack when sls remove
sinofseven
Serverless S3 Sync
A plugin to sync local directories and S3 prefixes for Serverless Framework,
k1LoW
Serverless S3bucket Sync
Sync a local folder with a S3 bucket after sls deploy
sbstjn
Serverless Sam
Exports an AWS SAM template for a service created with the Serverless Framework.
SAPessi
Serverless Scriptable Plugin
Customize Serverless behavior without writing a plugin.
weixu365
Serverless Sentry
Automatic monitoring of memory usage, execution timeouts and forwarding of Lambda errors to Sentry (https://sentry.io).
arabold
Serverless Shell
Drop to a runtime shell with all the environment variables set that you'd have in lambda.
UnitedIncome
Serverless Sqs Alarms Plugin
Wrapper to setup CloudWatch Alarms on SQS queue length
sbstjn
Serverless Sqs Fifo
A serverless plugin to handle creation of sqs fifo queue's in aws (stop-gap)
vortarian
Serverless Stack Output
Store output from your AWS CloudFormation Stack in JSON/YAML/TOML files, or to pass it to a JavaScript function for further processing.
sbstjn
Serverless Step Functions
AWS Step Functions with Serverless Framework.
horike37
Serverless Subscription Filter
Serverless plugin to register subscription filter for Lambda logs. Register and pipe the logs of one lambda to another to process.
blackevil245
Serverless Vpc Discovery
Serverless plugin for discovering VPC / Subnet / Security Group configuration by name.
amplify-education
Serverless Webpack
Serverless plugin to bundle your lambdas with Webpack
serverless-heaven
Serverless Wsgi
Serverless plugin to deploy WSGI applications (Flask/Django/Pyramid etc.) and bundle Python packages
logandk

Example Projects (V1.0)

Project Name Author
Jwtauthorizr
Custom JWT Authorizer Lambda function for Amazon API Gateway with Bearer JWT
serverlessbuch
Serverless Graphql Api
Serverless GraphQL API using Lambda and DynamoDB
boazdejong
Serverless Screenshot
Serverless Screenshot Service using PhantomJS
svdgraaf
Serverless Postgraphql
GraphQL endpoint for PostgreSQL using postgraphql
rentrop
Serverless Messenger Boilerplate
Serverless messenger bot boilerplate
SC5
Serverless Npm Registry
Serverless private npm registry, proxy and cache.
craftship
Serverless Pokego
Serverless-powered API to fetch nearby Pokemon Go data
jch254
Serverless Weekly2pocket App
Serverless-powered API for sending posts to pocket app
s0enke
Serverless Facebook Quotebot
100% Serverless Facebook messenger chatbot which will respond with inspiring quotes
pmuens
Serverless Slack Trevorbot
Slack bot for info on where in the world is Trevor Gerhardt?
conveyal
Serverless Garden Aid
IoT Garden Aid Backend
garden-aid
Serverless React Boilerplate
A serverless react boilerplate for offline development
99xt
Serverless Delivery Framework
This is a boilerplate for version release pipeline with serverless framework
99xt
Serverless Mailgun Slack
A Serverless function for posting to a Slack Webhook in response to a Mailgun route
Marcus-L
Pfs Email Serverless
This is a lambda function created by the serverless framework. It searches through members in our mongodb who have not been sent emails and sends them an email with their custom token to unlock the pledge free stream. It then marks those members off as already receiving the email.
SCPR
Plaid Cashburndown Service
Service for calculating cash burndown with plaid. Frontend code can be found here: https://github.com/cplee/cashburndown-site
cplee
Cordis Serverless
A serverless API for EU Cordis data
marzeelabs
Serverless Newsletter Signup
Saves user details into DynamoDB table. Required values are email, first_name and last_name.
ivanderbu2
Serverless Slack Cron
Lambda function which sends messages to Slack channel in regular intervals via cron trigger.
ivanderbu2
Giphy Bot
giphy-bot for Facebook chat
tywong
Jwt Lambda Python
Minimal proof-of-concept implementation of JWT with Serverless / AWS Lambda
mikaelmork
Sls Access Counter
Site visitor counter
takahashim
Sls Form Mail
Send SNS email from form data
takahashim
Serverless Python Sample
A simple serverless python sample with REST API endpoints and dependencies
bennybauer
Serverless Msg Gateway
A messaging aggregator for kik, skype, twilio, telegram, & messenger. Send and receive messages in a standard format.
yonahforst
Serverless Aws Rekognition Finpics
Use AWS Rekognition to provide a faces search of finpics.com
rgfindl
Serverless Slack Emojibot
Serverless slack bot for emoji
markhobson
Keboola Developer Portal
Keboola developer portal built with Serverless
keboola
Serverless Cloudwatch Rds Custom Metrics
A NodeJS-based MySQL RDS Data Collection script to push Custom Metrics to Cloudwatch with Serverless
AndrewFarley
Jrestless Examples
JRestless (Java / JAX-RS) examples for API Gateway Functions (plain JAX-RS, Spring, binary data requests/responses, custom authorizers and Cognito User Pool authorizers), SNS Functions (asynchronous communication between functions) and Service Functions (synchronous HTTP-like communication between functions - transparent through Feign)
bbilger
Sc5 Serverless Boilerplate
A boilerplate that contains setup for test-driven development
SC5
Serverless Blog To Podcast
Service that reads RSS feed and converts the entries to a podcast feed and audio files using Amazon Polly
SC5
Offset Trump
Single page app using Serverless (C# runtime) and S3 site hosting. Pledge to do a good thing for the next four years to offset the potential negative effects of the US Presidency
FLGMwt
Serverless Url Shortener
A simple url-shortener, using Serverless framework
aletheia
Serverless Html Pdf
Service that convert HTML to PDF using PhantomJS's rasterize example.
calvintychan
Serverless Examples Cached Rds Ws
A serverless framework example project that uses API Gateway, ElastiCache, and RDS PostgreSQL.
mugglmenzel
Bittman
A serverless project that follows a stock trading algorithm and uses scheduled functions to save data to DynamoDB and send emails through Mailgun.
rhlsthrm
Adoptable Pet Bot
Tweets adoptable pets using Serverless (Node.js) and AWS Lambda
lynnaloo
Owntracks Serverless
A serverless implementation of the OwnTracks HTTP backend
dschep
Serverless Modern Koa
Serverless modern koa starter kit
barczaG
Serverless Reactjs Universal Rendering Boilerplate
ReactJS web app Starter kit does universal (isomorphic) rendering with Serverless
TylorShin
Open Bot
An unoptionated Github bot driven by a configuration file in the repository
open-bot
Aws Ses Serverless Example
AWS SES example in NodeJS using lambda
lakshmantgld
Aws Api Gateway Serverless Project Written In Go
A serverless project that contains an API Gateway endpoint powered by a Lambda function written in golang and built using eawsy/aws-lambda-go-shim.
yunspace
Video Preview And Analysis Service
An event-driven service that generates labels using Amazon Rekognition and creates preview GIF animation from a video file.
laardee
Serverless Es6/7 Crud Api
Serverless Stack examples of backend CRUD APIs (DynamoDB + Lambda + API Gateway + Cognito User Pool authorizer) for React.js single-page app
AnomalyInnovations
Sqs Worker With Aws Lambda And Cloudwatch Alarms
Process messages stored in SQS with an auto-scaled AWS Lambda worker function.
sbstjn
Aws Lambda Power Tuning (Powered By Step Functions)
Build a Step Functions state machine to optimize your AWS Lambda Function memory/power configuration.
alexcasalboni
Amazon Kinesis Streams Fan Out Via Kinesis Analytics
Use Amazon Kinesis Analytics to fan-out your Kinesis Streams and avoid read throttling.
alexcasalboni
Grants Api Serverless
ES6 API to consume data from an external API, ingest into Elasticsearch and return a queryable endpoint on top of Elasticsearch
comicrelief
Honeylambda
a simple, serverless application designed to create and monitor URL {honey}tokens, on top of AWS Lambda and Amazon API Gateway
0x4D31
Stack Overflow Monitor
Monitor Stack Overflow questions and post them in a Slack channel
picsoung
React & Stripe Serverless Ecommerce
Serverless E-Commerce App with AWS Lambda, Stripe and React
patrick-michelberger
Serverless + Medium Text To Speech
Serverless-based, text-to-speech service for Medium articles
RafalWilinski

Contributing

We love our contributors! Please read our Contributing Document to learn how you can start working on the Framework yourself.

Check out our help-wanted or easy-pick labels to find issues we want to move forward on with your help.

Community

Consultants

These consultants use the Serverless Framework and can help you build your serverless projects.


Previous Serverless Version 0.5.x

You can find projects and plugins relating to version 0.5 here. Note that these are not compatible with v1.0 but we are working diligently on updating them. Guide on building v1.0 plugins.

You can read the v0.5.x documentation at readme.io.