Today we're happy to announce the v1.15 release of the Serverless Framework!
This release includes lots of new features, improvements and bugfixes. Let's take a look at the full feature set v1.15 introduces.
Highlights of 1.15.0
You can find a complete list of all the updates in the changelog or watch the video below. Kudos to ryanmurakami for recording the video!
CLI autocomplete
Ever found yourself looking through the docs or the CLI help menu to figure our what the exact command usage you're about to use looks like?
Serverless v1.15 introduces autocompletion which will assist you while working with the CLI tool.
Autocomplete is enabled automatically once you've updated to v1.15. You can make use of it by simply double tapping the Tabulator (tab) key while partially entering Serverless commands.
serverless de<tab>
will expand to serverless deploy
. All possible commands will be displayed if there is no exact match for the query you entered. This will also work for custom commands which are added via 3rd party Serverless plugins.
Autocomplete is also supported for options. So serverless deploy --st<tab>
will expand to serverless deploy --stage
.
This feature is another step towards are more user-friendly developer experience as it heavily decreases the cognitive load while working on your project.
Are you curious what other DX improvements are currently in the pipeline? Take a look at our DX issues and give a thumbs-up for your favorite feature or open up a new issue if you can't find what you're looking for.
Cognito User Pool Trigger event
Serverless v1.15 adds support for the new cognitoUserPool
event source which enables a way to react to Cognito User Pool triggers.
Let's take a look at an example where we configure our greet
function to be called whenever the PreSignUp
User Pool trigger is triggered:
service: my-service
provider:
name: aws
runtime: nodejs6.10
functions:
greet:
handler: handler.greet
events:
- cognitoUserPool:
pool: MyUserPool
trigger: PreSignUp
The cognitoUserPool
event source has lots of other configuration parameters. You can read more about them in our docs.
KMS Key support
Support to define your own KMS keys for encryption was a highly requested feature from our community.
The newly added awsKmsKey
config parameter finally enables a way to specify your own custom KMS Key arn
to e.g. encrypt your environment variables.
This parameter can be specified on a per-function or service-wide level.
Here's a simple example of what this looks like:
service:
name: my-service
awsKmsKeyArn: arn:aws:kms:us-east-1:XXXXX:key/service
provider:
name: aws
runtime: nodejs6.10
functions:
hello:
handler: handler.hello
awsKmsKeyArn: arn:aws:kms:us-east-1:XXXXX:key/function
environment:
KEY1: hello
goodbye:
handler: handler.goodbye
environment:
KEY2: goodbye
More information about this config can be found in KMS key docs.
Validation of CloudFormation template
Serverless v1.15 ships with support to validate the CloudFormation template before kicking off the deployment phase.
This feature could heavily improve the feedback loop because developers don't have to wait for a failing deployment to see that their CloudFormation template might include some (trivial) errors such as cyclic dependencies.
This feature is enabled by default and is especially helpful when you serverless deploy
your own deployment packages which might be generated or modified by another plugin / tool.
serverless.json
support
Usually you write your services definition in a serverless.yml
or serverless.yaml
file.
v1.15 finally adds support for serverless.json
. This way you can write your service specification in plain JSON:
service: my-service
provider:
name: aws
runtime: nodejs6.10
functions:
hello:
handler: handler.hello
is the same as:
{
"service": "my-service",
"provider": {
"name": "aws",
"runtime": "nodejs6.10"
},
"functions": {
"hello": {
"handler": "handler.hello"
}
}
}
Note: You can only have one serverless.*
file in your services directory. Serverless will try to load the YAML service definition first.
--aws-profile
option support
AWS profile support was one of the features which shipped with Serverless from the very beginning. However up until now it was not convenient to switch / use other profiles for deployment since you had to pre-define them in your serverless.yml
file or use other workarounds to switch between them.
With v1.15 you're able to specify the profile which should be used for the operation you want to perform via the --aws-profile
CLI option.
A deployment with the help of the qa
profile would look like this:
serverless deploy --aws-profile qa
Note: --aws-profile
support is not limited to the deploy
command but can be used with every other command as well.
Enhancements & Bug Fixes
This release also includes a bunch of bug fixes and several enhancements.
Thanks for reporting bugs and opening issues!
Contributors
This release contains lots of hard work from our awesome community, and wouldn't have been possible without passionate people who decided to spend their time contributing to make Serverless better.
Thank You to all of the contributors who submitted changes for this release:
- Dan Root
- David Humphrey
- Frank Schmid
- Hassan Khan
- James Thomas
- RichardSlater
- Ryan Lewis
- Sam Marks
- Taylor Hurt
- Tom Saleeba
- Xancar
- depotjoe
Get Involved
Serverless has a really helpful, vibrant and awesome community. Want to help us build the best Serverless tooling out there?
Contributing isn't just about code! Chime in on discussions, help with documentation updates or review Pull Requests.
Just filter by our labels such as easy-pick, help-wanted or needs-feedback to find areas where you can help us!
Furthermore, we're always seeking feedback from our community to build the features in the best way possible. Here's a list with issues where we need your feedback and insights in your real world usage of Serverless.
Next Steps
We've already started filling in the next milestones. Check out the 1.16 milestone to see what we have planned for the next release.
We hope that you like the new release! Let us know if you have any questions or feedback in our Forum or GitHub Issues.
Serverless Examples
The Serverless Examples Repository is an excellent resource if you want to explore some real world examples and learn more about what Serverless architectures look like.
Serverless Plugins
Serverless provides a completely customizable and pluggable codebase. Our community has written a vast amount of awesome plugins you can install and therefore enhance the capabilities of the Framework.
A list with all the different plugins can be found at our Serverless Plugins Repository.
Don't hestitate to open up a PR over there if you've authored or found a new Serverless plugin!