Page cover

Serverless Framework

Using the Serverless Framework, you can easily deploy applications to various cloud providers, such as AWS and Azure.

Introduction

Serverless Framework allows developers to deploy auto-scaling, pay-per-execution, event-driven functions.

The advantages include:

  • No server management

  • Cost-effectiveness

  • Scalability

  • Developer productivity

FastAPI is a modern web framework for building APIs with Python, known for its fast performance and built-in support for data validation and interactive documentation.

Setting Up Serverless Framework

Installation:

npm install -g serverless

Authentication:

For AWS, set up the AWS CLI and configure your credentials:

aws configure

For Azure, set up the Azure CLI and log in:

az login

Deploying FastAPI on AWS Lambda

Create a New Project:

serverless create --template aws-python3 --path my-fastapi-app
cd my-fastapi-app

FastAPI Setup

Install FastAPI and Uvicorn:

pip install fastapi uvicorn

Your application (app.py):

from fastapi import FastAPI

app = FastAPI()

@app.get("/")

def read_root():
    return {"Hello": "World"}

Serverless Configuration (serverless.yml):

service: my-fastapi-app

provider:
  name: aws
  runtime: python3.8

functions:
  api:
    handler: handler.app
    events:
      - http: ANY /
      - http: 'ANY {proxy+}'

Deploy:

serverless deploy

Deploying on Azure and Other Platforms

While AWS is widely used, Serverless Framework also supports Azure, Google Cloud, and more.

Azure

Update your serverless.yml:

provider:
  name: azure
  location: West US
  runtime: python3.6

functions:
  hello:
    handler: handler.hello
    events:
      - http: true
        x-azure-settings:
          authLevel: anonymous

Features, Tips, and Tricks

  1. Local Development: Use serverless-offline plugin for simulating AWS Lambda & API Gateway locally.

  2. Environment Variables: Manage with the serverless-dotenv-plugin.

  3. Middleware: The serverless-middleware plugin allows you to add middlewares before your lambda function is executed.

  4. Optimizing Dependencies: Use serverless-python-requirements to automatically package only the required dependencies.

  5. Warm-Up: AWS Lambdas can sometimes have cold starts. Use serverless-plugin-warmup to mitigate this.

  6. Fine-tune your IAM roles for your functions in serverless.yml to adhere to the principle of least privilege.

  7. Automate Documentation: FastAPI provides automatic interactive API documentation using Swagger.

Extended Management Commands

Deploy to a Specific Stage:

By default, the deployment goes to the dev stage.

serverless deploy --stage production

Remove a Specific Stage:

serverless remove --stage <stage-name>

Specifying a Region:

serverless deploy --region us-west-1

Function Deployment:

Instead of deploying the entire stack, deploy a single function.

serverless deploy function --function <function-name>

View Function Configuration:

serverless info --function <function-name>

Invoke a Function Remotely:

serverless invoke --function <function-name> --log

This prints out the configuration that will be sent to the provider.

serverless print

Serverless Dashboard:

After setting up an account on Serverless Dashboard, you can monitor, troubleshoot, and test your serverless application.

serverless dashboard

Serverless Plugin Management:

Install and manage plugins directly from the CLI.

serverless plugin install --name <plugin-name>
serverless plugin uninstall --name <plugin-name>

Config Credentials:

Set up the Serverless Framework with your account credentials, useful if you didn’t do it during the setup.

serverless config credentials --provider <provider-name> --key <key> --secret <s

Last updated