All Projects → JakePartusch → Serverlessui

JakePartusch / Serverlessui

A command-line utility for deploying serverless applications to AWS. Complete with custom domains, deploy previews, TypeScript support, and more.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Serverlessui

Zip It And Ship It
Intelligently prepare Node.js Lambda functions for deployment
Stars: ✭ 104 (-76.04%)
Mutual labels:  aws, serverless, lambda, cli
Terraform Nextjs Plugin
A plugin to generate terraform configuration for Nextjs 8 and 9
Stars: ✭ 41 (-90.55%)
Mutual labels:  aws, serverless, lambda, cli
Lambdalogs
A CLI tool to trace AWS Lambda calls over multiple CloudWatch log groups.
Stars: ✭ 18 (-95.85%)
Mutual labels:  aws, serverless, lambda, cli
Serverless Chrome
🌐 Run headless Chrome/Chromium on AWS Lambda
Stars: ✭ 2,625 (+504.84%)
Mutual labels:  aws, serverless, lambda, serverless-functions
Shep
A framework for building JavaScript Applications with AWS API Gateway and Lambda
Stars: ✭ 376 (-13.36%)
Mutual labels:  aws, serverless, lambda
Aws Microservices Deploy Options
This repo contains a simple application that consists of three microservices. Each application is deployed using different Compute options on AWS.
Stars: ✭ 370 (-14.75%)
Mutual labels:  aws, serverless, lambda
Faas
OpenFaaS - Serverless Functions Made Simple
Stars: ✭ 20,820 (+4697.24%)
Mutual labels:  serverless, lambda, serverless-functions
Up Examples
Example apps, apis, and sites for Up.
Stars: ✭ 381 (-12.21%)
Mutual labels:  aws, serverless, lambda
Aws Etl Orchestrator
A serverless architecture for orchestrating ETL jobs in arbitrarily-complex workflows using AWS Step Functions and AWS Lambda.
Stars: ✭ 245 (-43.55%)
Mutual labels:  aws, serverless, lambda
Aws Auto Cleanup
Open-source application to programmatically clean your AWS resources based on a whitelist and time to live (TTL) settings
Stars: ✭ 276 (-36.41%)
Mutual labels:  aws, serverless, lambda
Bash Lambda Layer
Run Bash scripts in AWS Lambda via Layers
Stars: ✭ 390 (-10.14%)
Mutual labels:  aws, serverless, lambda
Aws Serverless Workshop Innovator Island
Welcome to the Innovator Island serverless workshop! This repo contains all the instructions and code you need to complete the workshop. Questions? Contact @jbesw.
Stars: ✭ 363 (-16.36%)
Mutual labels:  aws, serverless, lambda
Aws Serverless Samfarm
This repo is full CI/CD Serverless example which was used in the What's New with AWS Lambda presentation at Re:Invent 2016.
Stars: ✭ 271 (-37.56%)
Mutual labels:  aws, serverless, lambda
Serverless Rust
⚡ 🦀 a serverless framework plugin for rustlang applications
Stars: ✭ 386 (-11.06%)
Mutual labels:  aws, serverless, lambda
netlify-lambda-function-example
An example Netlify Lambda function that processes payments with Stripe.
Stars: ✭ 93 (-78.57%)
Mutual labels:  lambda, serverless-functions, jamstack
Serverless Bundle
Optimized packages for ES6 and TypeScript Node.js Lambda functions without any configuration.
Stars: ✭ 295 (-32.03%)
Mutual labels:  aws, serverless, lambda
Grant
OAuth Proxy
Stars: ✭ 3,509 (+708.53%)
Mutual labels:  aws, serverless, lambda
Serverless Iam Roles Per Function
Serverless Plugin for easily defining IAM roles per function via the use of iamRoleStatements at the function level.
Stars: ✭ 311 (-28.34%)
Mutual labels:  aws, serverless, lambda
Aws Serverless Workshops
Code and walkthrough labs to set up serverless applications for Wild Rydes workshops
Stars: ✭ 3,512 (+709.22%)
Mutual labels:  aws, serverless, lambda
Cloud Custodian
Rules engine for cloud security, cost optimization, and governance, DSL in yaml for policies to query, filter, and take actions on resources
Stars: ✭ 3,926 (+804.61%)
Mutual labels:  aws, serverless, lambda

Serverless UI

Serverless UI

💻 🚀 ☁

Deploying Websites to AWS on Easy Mode

Serverless UI is a free, open source command-line utility for quickly building and deploying serverless applications on AWS

  • Bring your own UI It doesn't matter if it's React, Vue, Svelte or JQuery. If it compiles down to static files, then it is supported.

  • Serverless Functions Your functions become endpoints, automatically. Serverless UI deploys each function in your /functions directory as a Node.js lambda behind a CDN and API Gateway for an optimal blend of performance and scalability.

  • Deploy Previews Automatically deploy each iteration of your application with a separate URL to continuously integrate and test with confidence.

  • Custom Domains Quickly configure a custom domain to take advantage of production deploys!

  • TypeScript Support Write your serverless functions in JavaScript or TypeScript. Either way, they'll be bundled down extremely quickly and deployed as Node.js 14 lambdas.

  • Own your code Skip the 3rd Party services — get all of the benefits and security of a hosted AWS application, without going through a middleman. Deploy to a new AWS account, or an existing account and get up and running in five minutes!

What’s In This Document

🚀 Get Up and Running in 5 Minutes

You can get a new Serverless UI site deployed to you AWS account in just a few steps:

  1. AWS Prerequisites

    In order to deploy to AWS, you'll have to configure your machine with local credentials. You'll find the best instructions [here].(https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

  2. Install the Serverless UI Command-Line Interface

    npm install -g @serverlessui/cli
    
  3. Deploy your static website

    Finally, tell the Serverless UI where to find your website's static files.

    sui deploy --dir="dist"
    

📖 CLI Reference

  1. deploy
  2. configure-domain

deploy

sui deploy

Options

Option Description Default
--dir The directory of your website's static files "dist"
--functions The directory of the functions to deploy as endpoints "functions"
--prod Custom Domains only: false will deploy a preview false

Note: The --dir directory should be only static files. You may need to run a build step prior to deploying

Examples

  • Deploy a preview of static website in a build directory with no functions
sui deploy --dir="build"
...
❯ Website Url: https://xxxxx.cloudfront.net
  • Deploy a preview of static website with serverless functions
sui deploy --dir="build" --functions="lambdas"
...
❯ Website Url: https://xxxxx.cloudfront.net
❯ API Url: https://xxxxx.cloudfront.net/api/my-function-name
❯ API Url: https://xxxxx.cloudfront.net/api/my-other-function-name
  • Production deploy

    Note: A custom domain must be configured for production deploys. See configure-domain

sui deploy --prod --dir="build" --functions="lambdas"
...
❯ Website Url: https://www.my-domain.com
❯ API Url: https://www.my-domain.com/api/my-function-name
❯ API Url: https://www.my-domain.com/api/my-other-function-name

configure-domain

This step only needs to be completed once, but it may take anywhere from 20 minutes - 48 hours to fully propogate

sui configure-domain [--domain]

Options

Option Description Default
--domain Your custom domain None

Examples

Deploy a Hosted Zone and Certificate to us-east-1 (required region for Cloudfront)

sui configure-domain --domain="serverlessui.app"

Additional Steps

A minute or two after running this command, the deploy will "hang" while trying to validate the domain prior to creating the wildcard certificate.

  1. Navigate to Route53

    Find your Hosted Zone and take note of the Zone Id and Name Servers

    Serverless UI

    Serverless UI

  2. Update the Nameservers on your Domain Registrar's website (eg. Namecheap)

    Serverless UI

  3. Wait

    The DNS resolution can be as quick as 10 minutes or take up to 48 hours. After some time, the Serverless UI command may timeout, but running it again should pick up where it left off.

  4. Navigate to Certificate Manager

    After the configure-domain command has completed successfully, navigate to Certificate Manager and take note of the Certificate Arn (eg. "arn:aws:acm:us-east-1:ACCOUNT_ID:certificate/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx")

  5. Create a Serverless UI config file

    Place the config file in the root of your project

    serverlessui.config.js

    module.exports = {
      domain: "serverlessui.app",
      zoneId: "Z10011111YYYYGGGRRR",
      certificateArn:
        "arn:aws:acm:us-east-1:ACCOUNT_ID:certificate/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
    };
    

Continuous Integration

Since Serverless UI is a command-line tool available via npm, it will work in almost any CI environment.

Examples

GitHub Actions

Note: Checkout the action in this repo for a live example https://github.com/JakePartusch/serverlessui/actions

name: Serverless UI Build & Deploy Preview

on: [pull_request]

jobs:
  deploy-pr-preview:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/[email protected]
      - name: Use Node.js
        uses: actions/[email protected]
        with:
          node-version: "12.x"
      - run: npm ci
      - run: npm run build
      - name: Configure AWS Credentials
        uses: aws-actions/[email protected]
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-west-2
      - run: npm install -g @serverlessui/cli
      - run: sui deploy --dir="build"
      - name: Add PR Comment
        uses: actions/[email protected]
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const outputs = require(`${process.env.GITHUB_WORKSPACE}/cdk.out/outputs.json`);
            const stackName = Object.keys(outputs).find((key) =>
              key.startsWith("ServerlessUI")
            );
            const baseUrlKey = Object.keys(outputs[stackName]).find((key) =>
              key.startsWith("ServerlessUIBaseUrl")
            );
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `✅ Your deploy preview is ready: ${outputs[stackName][baseUrlKey]}`,
            });

👩‍🔬 Advanced Use Cases

For existing serverless projects or those that may have additional CloudFormation and/or CDK infrastructure, Serverless UI provides CDK constructs for each of the cli actions:

import { ServerlessUI, DomainCertificate } from '@serverlessui/construct;

Examples

Serverless UI

For a full-featured example, check out: https://github.com/JakePartusch/serverlessui-advanced-example

const { functions } = new ServerlessUI(this, "ServerlessUI", {
  buildId: "advanced-example",
  uiSources: [Source.asset(`${__dirname}/../build`)],
  apiEntries: [`${__dirname}/../functions/graphql.ts`],
  apiEnvironment: {
    TABLE_NAME: table.tableName,
  },
  domain: {
    domainName: "serverlessui.app",
    hostedZone: HostedZone.fromHostedZoneAttributes(this, "HostedZone", {
      hostedZoneId: "Z1XXXXXXXXXXXXX",
      zoneName: "serverlessui.app",
    }),
    certificate: Certificate.fromCertificateArn(
      this,
      "Certificate",
      "arn:aws:acm:us-east-1:xxxxxxxxxx:certificate/xxxxxx-xxxx-xxxx-xxxxxx"
    ),
  },
});

FAQ

  • Q. How is this different than Netlify or Vercel?
    • Serverless UI allows you to enjoy the benefits of pre-configured infrastructure without going through a middleman. This allows for fewer accounts, tighter security and seamless integration with a wealth of AWS services. Additionally, you receive these benefits "at cost" since this is deployed directly to your AWS account.

License

Licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].