Serverless Framework
The project named Serverless that helps you build “serverless” apps (with a name that makes it difficult to Google anything).
Concepts/Things to Know
-
Serverless Framework (Traditional) - This is the client-side tool which turns your YAML into CloudFormation templates??
-
Serverless Components - This is where your code is pushed up to serverless.com to the “Components Engine”, where it does some magic and pushes it to the cloud provider. Note that this means that serverless.com will receive your AWS credentials.
- All the Serverless Components are on GitHub
- Components abstract away much of the provider-specific info. Instead that sort of stuff is calculated server-side (by serverless.com), so you have much less local configuration.
- Components are also required for
serverless dev
real-time dev mode.
Serverless Components
Getting started
Install npm i -g serverless
first. Then:
-
Create an app in the Serverless web console, from one of the starter templates, or from an existing local Serverless Framework project.
-
Use the command
serverless init xxxxxx
wherexxxxxx
is an ID of a new app which has been generated by the web console. -
serverless deploy
to deploy to public cloud.
The client will create a CloudFormation stack and apply it, upload the necessary resources to the cloud provider.
Or, in an existing project
cd my-project/
# To create a Lambda
sls init aws-lambda-starter -d my-api
# To create a DynamoDB
sls init aws-dynamodb-starter -d my-database
Working with components.
Use serverless registry
to see the list of serverless components available:
$ serverless registry
serverless ⚡registry
Run "serverless init <package>" to install a template...
• fullstack-app - https://github.com/serverless-components/fullstack-app
• express-starter - https://github.com/serverless-components/express/tree/master/templates/express-starter
• react-starter - https://github.com/serverless-components/website/tree/master/templates/react-starter
• graphql-starter - https://github.com/serverless-components/graphql/tree/master/templates/graphql-starter
• aws-lambda-starter - https://github.com/serverless-components/aws-lambda/tree/master/templates/aws-lambda-starter
• aws-dynamodb-starter - https://github.com/serverless-components/aws-dynamodb/tree/master/templates/aws-dynamodb-starter
• aws-iam-role-starter - https://github.com/serverless-components/aws-iam-role/tree/master/templates/aws-iam-role-starter
• aws-lambda-layer-starter - https://github.com/serverless-components/aws-lambda-layer/tree/master/templates/aws-lambda-layer-starter
Find more here: https://github.com/serverless-components
Troubleshooting
“service” property is missing in serverless.yml
- This seems to happen when you use the newer “Serverless Components” approach, instead of the old method of defining a
service
name in your serverless.yml file. - Not really sure why this happens.
- I can’t do
serverless dashboard
in the root directory of a Serverless Components project either.
On a React front-end site, sls deploy
fails with “Command failed: npm run build…“:
- No cause for the error is shown, or the error is swallowed up by npm/sls. So the real reason for the failed build can be hidden, for some reason.
- Manually run
npm run build
, which should show the reason for the failure.