Giter VIP home page Giter VIP logo

lift's Introduction

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

Why Lift?

Installation

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-lift plugin in serverless.yml (see the example below).

Quick start

Once installed, start using Lift constructs in serverless.yml:

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

Constructs

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

Read more...

Deploy static websites.

constructs:
    landing:
        type: static-website
        path: dist

Read more...

Deploy preconfigured S3 buckets to store files.

constructs:
    avatars:
        type: storage

Read more...

Deploy SQS queues and workers for asynchronous processing.

constructs:
    my-queue:
        type: queue
        worker:
            handler: src/report-generator.handler

Read more...

Deploy webhooks to receive notifications from 3rd party applications.

constructs:
    stripe-webhook:
        type: webhook
        path: /my-webhook-endpoint
        authorizer:
            handler: myAuthorizer.main

Read more...

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

Read more...

More constructs are coming soon! Got suggestions? Open and upvote drafts.

Lift-specific configuration

Lift default behaviors can be override and configured as per your likings using the lift property at the root of your serverless.yml file. This property is optional as well as all the configurable options within. Configurations specified at this level affect all constructs defined within the same service file.

Ejecting

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.

To eject:

  • export the CloudFormation template via serverless lift eject
  • copy the parts you want to turn into CloudFormation and paste them in the resources section of serverless.yml
  • don't forget to remove from serverless.yml the Lift constructs you have turned into CloudFormation

Extend Lift constructs

Lift packages production-ready features in the form of highly opinionated construts with minimal configuration options in order to avoid confusion for serverless early adopters. In order to empower more advanced developpers, every construct ships with an extensions property allowing overrides on the underlying Cloudformation Resources.

In the exemple below, the S3 Bucket CloudFormation Resource generated by the avatars storage construct will be extened with the new AccessControl: PublicRead CloudFormation property.

constructs:
    avatars:
        type: storage
        extensions:
            bucket:
                Properties:
                    AccessControl: PublicRead

Each construct documentation lists available underlying CloudFormation resources that can be extended using the extensions key.

TypeScript definitions

TypeScript users can use serverless.ts instead of serverless.yml. Lift provides type definitions to help.


Lift is built and maintained with love ❤️ by

lift's People

Contributors

mnapoli avatar fredericbarthelet avatar t-richard avatar adriencaccia avatar andrewbarba avatar fargito avatar jakejscott avatar htxiong avatar marcespiard avatar sludgegirl avatar jaulz avatar aran112000 avatar bytestream avatar thomasaribart avatar dnp1 avatar atter avatar moosthuizen42 avatar joawan avatar iam4x avatar sc0ra avatar seantcanavan avatar salemdar avatar martindanielsson avatar louispinsard avatar kamalgill avatar j0k3r avatar acrobat avatar whambulance avatar giuliano-macedo avatar flavianh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.