Lift is a plugin that leverages the AWS CDK to expand the Serverless Framework beyond functions.
Deploy production-ready websites, queues, storage buckets and more with a few lines in serverless.yml.
⚡️For developers - No AWS knowledge required ⚡️Production-ready - Built by AWS experts, optimized for production ⚡️Not invasive - Integrates with existing projects ⚡️No lock-in - Eject to CloudFormation at any time
Lift is a Serverless Framework plugin, install it in your project:
serverless plugin install -n serverless-lift
If you prefer, you can install Lift via NPM:
npm install --save-dev serverless-lift. Then, register the
serverless.yml(see the example below).
Once installed, start using Lift constructs in
service: my-app provider: name: aws plugins: - serverless-lift functions: # ... constructs: # Include Lift constructs here landing-page: type: static-website path: 'landing/dist' avatars: type: storage
The AWS CDK is extremely powerful, but it is very complex and cannot be used in
serverless.yml. Lift changes that: use the best of the CDK in Serverless, without having to learn about it!
Lift provides components, aka "constructs", specifically selected for serverless applications. They are all built using the CDK and its best practices, with unique features to provide an awesome developer experience.
Deploy single-page applications, for example React, VueJS or Angular apps.
constructs: landing: type: single-page-app path: dist
Deploy static websites.
constructs: landing: type: static-website path: dist
Deploy preconfigured S3 buckets to store files.
constructs: avatars: type: storage
Deploy SQS queues and workers for asynchronous processing.
constructs: my-queue: type: queue worker: handler: src/report-generator.handler
Deploy webhooks to receive notifications from 3rd party applications.
constructs: stripe-webhook: type: webhook path: /my-webhook-endpoint authorizer: handler: myAuthorizer.main
Deploy databases leveraging DynamoDB Single Table Design principles.
constructs: database: type: database/dynamodb-single-table
Deploy server-side rendered websites, for example Laravel or Symfony apps.
constructs: website: type: server-side-website assets: '/css/*': public/css '/js/*': public/js
More constructs are coming soon! Got suggestions? Open and upvote drafts.
You can eject from Lift at any time: Lift is based on CloudFormation. That allows anyone to kickstart a project with Lift, and fallback to CloudFormation if you ever grow out of it.
- export the CloudFormation template via
serverless lift eject
- copy the parts you want to turn into CloudFormation and paste them in the
resourcessection of serverless.yml
- don't forget to remove from
serverless.ymlthe Lift constructs you have turned into CloudFormation
TypeScript users can use
serverless.ts instead of
serverless.yml. Lift provides type definitions to help.
Lift is built and maintained with love