Skip to content

Serverless Framework Support

Satish Malireddi edited this page Nov 28, 2019 · 1 revision

Overview

Open source serverless framework is a great tool in serverless ecosystem that developers can use to design and deploy their serverless applications to public cloud services like AWS. Developers can pick and choose services from a plethora of serverless offerings from AWS (& others) to design their applications. Also, they can use its rich plugin ecosystem to locally test their serverless applications (if they wish)! If this sounds interesting, checkout some of the examples published here.

Jazz now supports serverless framework! Developers can create their application definitions (or simply serverless.yml files!) using Jazz UI and deploy their applications to cloud. Or, they can simply commit them to SCM (BitBucket/Gitlab) along with their code and Jazz will take care of deploying the service to the cloud. Along with deployment, Jazz will take care of all the operational readiness aspects of your application (like CI/CD, logs, metrics, tracking deployments, assets etc.) to make your application production ready from day 1!

This document provides step-by-step instructions on how to leverage Jazz & serverless framework to create and manage your serverless applications.

Create Service

Head over to create service screen in Jazz UI. Along with the existing service types, you should see “custom” as a new service type. Click "custom" to begin with creating serverless framework based service in Jazz. Provide other details like target cloud provider, service name, namespace etc. You can also provide your application definition (more on this below) during service creation. Click other details and hit "Submit" to create your serverless service!

Application Definition

You'll need a way to design your application when you use serverless framework. This specification (or the application definition!) is simply the serverless.yml file content that you would typically use with your serverless framework based services. If you have it already, you can provide it during service creation so that Jazz will create a serverless.yml file along with the service template and push it to your code repository. Now that you have the file in your repository, you can then make changes and have them deployed to respective jazz environments based on jazz development workflow. It is important to note that Jazz platform will update this serverless.yml file by applying several best practices like adding tags, use naming conventions for assets etc. You can view the final updated serverless.yml file in Jazz UI under environment view.

Here is how you can specify the application definition during service creation:

Specify Application Definition

View application definition for a specific environment in the environment view:

View Application Definition

Tracking Assets

You can track all the assets created using Jazz using Jazz UI. You can filter them using the environment, asset type etc. All the assets will be tagged based on the metadata that Jazz captures during service creation. To track the assets outside Jazz (for example, directly in AWS console), it is important to specify the correct application name during service creation.

View assets for the serverless application in the environment view with asset type filter:

Track Assets

Deployment Workflow

Nothing really changes with how developers interact with Jazz to manage their serverless application. Developers can simply focus on code to deliver business value and leave the infrastructure configuration and management to Jazz. Development Workflow

Supported Resources

Jazz maintains a whitelist of resource types that are allowed to be provisioned through Jazz. This is in place to provide a framework to allow Jazz administrators to control what other developers can define and deploy. This list can be updated by Jazz administrators as per their enterprise requirements. Following are the list of resources that are allowed as part of default Jazz installation -

Supported AWS Resources

  • DynamoDB
  • API Gateway
  • Lambda
  • S3
  • CloudFront
  • Lambda@Edge
  • SQS
  • Kinesis
  • IAM
  • Cloud Watch Events

Supported Event Sources

  • Schedule - Cron
  • Schedule - Rate
  • S3
  • SQS
  • Kinesis streams
  • DynamoDB streams
  • Http

Supported Serverless Plugins

  • serverless-webpack
  • serverless-appsync-plugin
  • serverless-step-functions
  • serverless-plugin-warmup
  • serverless-plugin-typescript
  • serverless-plugin-canary-deployments
  • serverless-mocha-plugin
  • serverless-kms-secrets
  • serverless-iam-roles-per-function
  • serverless-plugin-cloudfront-lambda-edge

UI Walkthrough

Selecting the service type:

Select service type

Selecting the runtime:

Select runtime

Selecting the target cloud account/subscription details:

Select runtime

Specifying the Application Definition (optional):

Add application definition

Examples for application definitions

See Serverless Examples.

Additional Notes

  • Make sure that your application definition conforms to the supported resources in the whitelist published above. Deployment workflow will fail during validation step if unsupported resources are used in the application definition. Contact your Jazz administrators if you need additional resources to be whitelisted.
  • Some of the parameters in the serverless.yml file will always be overridden by Jazz for compliance and governance purposes. You should see the final version applied to an environment in Jazz UI under each environment.