Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@publicdomain/serverless

serverless22MIT1.51.3

Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more

serverless, serverless framework, serverless applications, serverless modules, api gateway, lambda, aws, aws lambda, amazon, amazon web services, azure, azure functions, google cloud functions, apache open whisk, iot, internet of things, serverless.com

readme

Serverless Application Framework AWS Lambda API Gateway

serverless Build Status npm version Coverage Status gitter Known Vulnerabilities license

WebsiteDocsNewsletterSwagGitterForumMeetupsTwitterWe're HiringEnterprise

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 Cloud Functions, 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 overview here.

serverless components notice

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 on AWS:

Invokes an AWS Lambda Function on AWS and returns logs.

serverless invoke -f hello -l
  1. Invoke the Function on your machine:

Invokes an AWS Lambda Function on your local machine and returns logs.

serverless invoke local -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, Go, C#, Ruby, Swift, Kotlin, PHP, Scala, & F#
  • 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!

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 good first issue 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.


Licensing

Serverless is licensed under the MIT License.

All files located in the node_modules and external directories are externally maintained libraries used by this software which have their own licenses; we recommend you read them, as their terms may differ from the terms in the MIT License.

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.

changelog

1.51.0 (2019-08-28)

Meta

1.50.1 (2019-08-26)

Meta

1.50.0 (2019-08-14)

Meta

1.49.0 (2019-07-30)

Meta

1.48.4 (2019-07-25)

Meta

1.48.3 (2019-07-23)

Meta

1.48.2 (2019-07-19)

Meta

1.48.1 (2019-07-19)

Meta

1.48.0 (2019-07-18)

Meta

1.47.0 (2019-07-10)

Meta

1.46.1 (2019-06-28)

Meta

1.46.0 (2019-06-26)

Meta

1.45.1 (2019-06-12)

Meta

1.45.0 (2019-06-12)

Meta

1.44.1 (2019-05-28)

Meta

1.44.0 (2019-05-28)

Meta

1.43.0 (2019-05-20)

Meta

1.42.3 (2019-05-14)

Meta

1.42.2 (2019-05-10)

Meta

1.42.1 (2019-05-09)

Meta

1.42.0 (2019-05-09)

Meta

1.41.1 (2019-04-23)

Meta

1.41.0 (2019-04-18)

Meta

1.40.0 (2019-03-28)

Meta

1.39.1 (2019-03-18)

Meta

1.39.0 (2019-03-15)

Meta

1.38.0 (2019-02-20)

Meta

1.37.0 (2019-02-06)

Meta

1.36.3 (2019-01-23)

Meta

1.36.2 (2019-01-21)

Meta

1.36.1 (2019-01-14)

Meta

1.36.0 (2019-01-10)

Meta

1.35.1 (2018-12-18)

Meta

1.35.0 (2018-12-13)

Meta

1.34.1 (2018-11-30)

Meta

1.34.0 (2018-11-29)

Meta

1.33.2 (2018-11-18)

Meta

1.33.1 (2018-11-15)

Meta

1.33.0 (2018-11-15)

Meta

1.32.0 (2018-09-17)

Meta

1.31.0 (2018-09-11)

Meta

1.30.3 (2018-08-28)

Meta

1.30.2 (2018-08-28)

Meta

1.30.1 (2018-08-16)

Meta

1.30.0 (2018-08-09)

Meta

1.29.2 (2018-07-29)

Meta

1.29.1 (2018-07-28)

Meta

1.29.0 (2018-07-26)

Meta

1.28.0 (2018-07-04)

Meta

1.27.0 (2018-05-02)

Meta

1.26.1 (2018-02-27)

Meta

1.26.0 (2018-01-29)

Meta

1.25.0 (2017-12-20)

Meta

1.24.1 (2017-11-07)

Meta

1.24.0 (2017-11-01)

Meta

1.23.0 (2017-09-21)

Meta

1.22.0 (2017-09-13)

Meta

1.21.1 (2017-09-06)

Meta

1.21.0 (2017-08-30)

Meta

1.20.2 (2017-08-17)

Meta

1.20.1 (2017-08-17)

Meta

1.20.0 (2017-08-16)

Meta

1.19.0 (2017-08-02)

Meta

1.18.1 (2017-07-28)

Meta

1.18.0 (2017-07-20)

Meta

1.17.0 (2017-07-05)

  • Cleanup F# build template output on macOS - #3897
  • Add disable flag for OpenWhisk functions - #3830
  • Only redeploy when the code/config changes - #3838
  • Add opt-out config for dev dependency exclusion - #3877
  • Add infinite stack trace for errors - #3839
  • Fixed a bug with autocomplete - #3798

Meta

1.16.1 (2017-06-26)

  • CI/CD fix for the Serverless Platform - #3829

Meta

1.16.0 (2017-06-21)

  • Added support for usage plans to APIG - #3819
  • Optmizied packaging to exclude dev dependencies - #3737
  • Added support for S3 server side encryption - #3804
  • Improved HTTP error handling - #3752
  • Throw an error when requsted CF variable doesn't exist - #3739
  • Throw an error if an individual package is empty - #3729

Meta

1.15.3 (2017-06-12)

  • Fixed autocomplete bug with help option - #3781

Meta

1.15.2 (2017-06-10)

  • Fixed installation error - #3763

Meta

1.15.0 (2017-06-08)

  • Added autocomplete support to the CLI - #3753
  • Added KMS key support - #3672
  • Added Cognito User pool support - #3657
  • Added serverless.json support - #3647
  • Added aws-profile support - #3701
  • Added CloudFormation validation support - #3668
  • Fixed S3 event race condition bug - #3705
  • Fixed CORS origin config bug - #3692

Meta

1.14.0 (2017-05-24)

  • Added login command - #3558
  • Added support for DeadLetter Config with SNS - #3609
  • Added support for S3 variables - #3592
  • Added rollback function command - #3571
  • Added X-Amz-User-Agent to list of allowed headers in CORS - #3614
  • Added support for HTTP_PROXY API Gateway integration - #3534
  • Added IS_LOCAL environment variable with invoke local command - #3642
  • Removed package.json in exclude rules - #3644

Meta

1.13.2 (2017-05-15)

  • Fixed a bug when using dot notation in YAML keys (#3620)

Meta

1.13.1 (2017-05-12)

  • Fixed bug when referencing variables from other variable object values (#3604)
  • Fixed bug when packaging a functions-free service (#3598)

Meta

1.13.0 (2017-05-10)

  • Added support for cross service communication via CloudFormation outputs (#3575)
  • Add Lambda tagging functionality (#3548)
  • Added support for Promises in the variable system (#3554)
  • Added hello-world template (#3445)
  • Improved Info plugins lifecylce events for plugin authors (#3507)
  • Allow service to be specified as object in serverless.yml (#3521)

Meta

1.12.1 (2017-04-27)

  • Fix bug when using the package command with the variable system (#3527)

Meta

1.12.0 (2017-04-26)

  • Separated packaging and deployment with a new package command (#3344)
  • Extend OpenWhisk runtime support (#3454)
  • Upgrade gradle wrapper to 3.5 (#3466)
  • Fixed bug when using event streams with custom roles (#3457)
  • Fixed bug with SNS events (#3443)
  • Fixed bug when using custom deployment bucket (#3479)
  • Added support for Python 3.6 for Lambda (#3483)
  • Added new syntax to specify ARN for SNS events (#3505)

1.11.0 (2017-04-12)

  • Add CloudWatch Logs Event Source (#3407)
  • Add version description from function (#3429)
  • Add support for packaging functions individually (#3433)

Meta

1.10.2 (3.04.2017)

  • Add support for packaging functions individually at the function level (#3433)

1.10.1 (2017-03-30)

  • Update serverless-alpha detection (#3423)

Meta

1.10.0 (2017-03-29)

  • Fixed bug with ANY http method (#3304)
  • Reduced unit test time significantly (#3359)
  • Added AWS Groovy Gradle Template (#3353)
  • Reduce dependency tree depth between IAM & Log Groups (#3360)
  • Added entrypoints for plugins (#3327)
  • Removed pre-install script (#3385)
  • Expose plugin hooks (#2985)
  • Add support for Node 6 runtime in invoke local (#3403)
  • Updated Node.js templates to include Node 6 runtime by default (#3406)
  • Removed breaking changes warnings (#3418)
  • Auto loading serverless-alpha plugin (#3373)

Meta

1.9.0 (2017-03-14)

  • Fixed bug with serverless plugins lookup (#3180)
  • Fixed bug with serverless create generated .gitignore (#3355)
  • Fixed bug with authorizer claims (#3187)
  • Added support for CloudFormation service roles (#3147)
  • Improvements for invoke local plugin (#3037)
  • Added Azure Functions Node.js template in serverless create (#3334)
  • Allow DynamoDB and Kinesis streams to use GetAtt/ImportValue (#3111)

Meta

1.8.0 (2017-02-28)

Non-Breaking Changes

  • Fixed bug with deployment progress monitoring (#3297)
  • Fixed "too many open files" error (#3310)
  • Fixed bug with functions lists loaded from a separate file using Serverless Variables (#3186)

Breaking Changes

Removed IamPolicyLambdaExecution Resource

We've removed the IamPolicyLambdaExecution resource template and replaced it with inline policy within the role as it's been causing issues with VPC and bloating the CF template. This is a breaking change only for users who are depending on that resource with Ref or similar CF intrinsic functions.

Changed displayed function name for sls info

The function name displayed when you run sls info is now the short function name as found in serverless.yml rather than the actual lambda name to keep it more provider agnostic. This could be breaking for any user who is depending or parsing the CLI output.

Meta

1.7.0 (2017-02-14)

  • Added CloudWatch event source (#3102)
  • Fixed average functions duration calculation in "sls metrics" output (#3067)
  • Added SLS_IGNORE_WARNINGS flag and logging upcoming breaking changes (#3217)
  • Reduced memory consumption during zipping process (#3220)
  • Fixed bug when using LogGroup resources with custom roles (#3213)

Meta

1.6.1 (2017-01-31)

A minimal patch release that fixes an issue with rendering README.md on npm registry.

1.6.0 (2017-01-30)

Important Note: This release includes breaking changes. If your services stopped working after upgrading to v1.6.0, please read the following section.

Breaking Changes

CloudWatch logs are created explicitly

Up until this release, CloudWatch log groups were created implicitly by AWS/Lambda by default and were not included in your service stack. However, some users were able to easily reach the CloudWatch log group limits (currently at 500 log groups), and it wasn't an easy task to clear them all. Because of that we decided to explicitly create the log groups using CloudFormation so that you can easily remove them with sls remove. This was also optionally possible with the cfLogs: true config option.

If your service doesn't have the cfLogs: true set, and one of the function has been invoked at least once (hence the log groups were created implicitly by AWS), then it's very likely that you'll receive a "log group already exists" error after upgrading to v1.6.0. That's because CF is now trying to create the already created log groups from scratch to include it in the stack resources. To fix this breaking change, simply delete the old log group, or rename your service if you must keep the old logs.

Removed function Arns from CloudFormation outputs

Up until this release, the output section of the generated CloudFormation template included an output resource for each function Arn. This caused deploying big services to fail because users were hitting the 60 outputs per stack limit. This effectively means that you can't have a service that has more than 60 functions. To avoid this AWS limit, we decided to remove those function output resources completely, to keep the stack clean. This also means removing the function Arns from the sls info command, and at the end of the deployment command.

This is a breaking change for your project if you're depending on those function output resources in anyway, or if you're depending on function arn outputs from the deploy or info commands. Otherwise, your project shouldn't be affected by this change. Fixing this issue depends on your needs, but just remember that you can always create your own CF outputs in serverless.yml.

Moved getStackName() method

This is a breaking change for plugin authors only. If your plugin used the provider.getStackName() method, it has been moved to naming.js, and should be referenced with provider.naming.getStackName() instead.

Removed the defaults property from serverless.yml

We've finally dropped support for the defaults property which we introduced in v1. All child properties should now be moved to the provider object instead.

Non-breaking changes

  • Reduce memory consumption on deploy by at least 50% (#3145)
  • Added openwhisk template to sls create command (#3122)
  • Allow Role 'Fn::GetAtt' for Lambda role (#3083)
  • Added Access-Control-Allow-Credentials for CORS settings (#2736)
  • add Support for SNS Subscription to existing topics (#2796)
  • Function version resources are now optional. (#3042)
  • Invoke local now supports python runtime. (#2937)
  • Fixed "deployment bucket doesn't exist" error (#3107)
  • Allowed function events value to be variables (#2434)

Meta

1.5.1 (2017-01-19)

Bug Fixes

  • Fix bug with multi line values is given in IoT events (#3095)
  • Add support of numeric template creation path (#3064)
  • Fix deployment bucket bug when using eu-west-1 (#3107)

Meta

1.5.0 (2017-01-05)

Features

Bug Fixes

  • Fix VTL string escaping (#2993)
  • Scheduled events are enabled by default (#2940)
  • Update status code regex to match newlines (#2991)
  • Add check for preexistent service directory (#3014)
  • Deployment monitoring fixes (#2906)
  • Credential handling fixes (#2820)
  • Reduced policy statement size significantly (#2952)

Meta

1.4.0 (2016-12-15)

Features

Bug Fixes

  • Fixed exit code for failed function invocations (#2836)
  • Stricter validation for custom IAM statements (#2132)
  • Fixed bug in credentials setup (#2878)
  • Removed unnecessary warnings during Serverless installation (#2811)
  • Removed request and response config when using proxy integration (#2799)
  • Internal refactoring

Meta

1.3.0 (2016-12-02)

Features

Improvements

  • Documentation improvements with serverless.yml file reference (#2703)
  • Display info how to use SLS_DEBUG (#2690)
  • Drop event.json file on service creation (#2786)
  • Refactored test structure (#2464)
  • Automatic test detection (#1337)

Bug Fixes

  • Add DependsOn for Lamda functions and IamPolicyLambdaExecution (#2743)
  • Add JSON data parsing for invoke command (#2685)
  • Internal refactoring

Meta

1.2.0 (2016-11-22)

Features

Bug Fixes

  • Fix --noDeploy flag to generate deployment files offline without needing internet connection (#2648)
  • Bring back the include packaging feature with the help of globs (#2460)
  • Internal refactoring

Meta

1.1.0 (2016-11-02)

Future breaking changes

We will include the LogGroup for your Lambda function in the CloudFormation template in the future. This will break deployments to existing applications because the log group was already created. You will get a warning about this if you deploy currently. We will force this behaviour in a future release, for now you can set it through the cfLogs: true parameter in your provider config. This change will also limit the logging rights to only this LogGroup, which should have no impact on your environment. You can read more in our docs.

Features

Bugs

  • Fix variable syntax fallback if the file doesn't exist (#2565)
  • Fix overwriting undefined variables (#2541)
  • Fix CF deployment issue (#2576)
  • Correctly package symlinks (#2266)

Other

Meta

1.0.3 (2016-10-21)

Following is a selection of features, bug fixes and other changes we did since 1.0.2. You can also check out all changes in the Github Compare View

Features

Bugs

  • Fix not thrown error after failed ResourceStatus bug (#2367)
  • Fix overwrite resources and custom resource merge bug (#2385)
  • Clean up after deployment works correctly now (#2436)

Other

  • Migrate Integration tests into main repository (#2438)

1.0.2 (2016-10-13)

  • Clean up NPM package (#2352)
  • Clean up Stats functionality (#2345)

1.0.1 (2016-10-12)

Accidentally released 1.0.1 to NPM, so we have to skip this version (added here to remove confusion)

1.0.0 (2016-10-12)

Breaking Changes

  • The HTTP Event now uses the recently released Lambda Proxy by default. This requires you to change your handler result to fit the new proxy integration. You can also switch back to the old integration type.
  • The Cloudformation Name of APIG paths that have a variable have changed, so if you have a variable in a path and redeploy CF will throw an error. To fix this remove the path and readd it a second deployment.

Release Highlights

Following is a selection of the most important Features of the 1.0.0 since 1.0.0-rc.1.

You can see all features of 1.0.0-rc.1 in the release blogpost

Documentation

Events

Other