Zappa is a free, open source api development & testing project written in Python and released under MIT. It has 3,695 GitHub stars, 392 forks and 23 open issues, and was last pushed 3 days ago. On this registry it ranks #61 of 103 tracked projects in API Development & Testing, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is Zappa?

What it is

Zappa is an open-source Python project for deploying serverless web applications and APIs on AWS. It lives in the Python web framework ecosystem and the AWS serverless ecosystem, with topic tags for Flask, Django, Pyramid, Bottle, AWS Lambda, API Gateway, and ALB. The project is distributed under the MIT license and is categorized as a developer tool for API development and testing.

The concrete problem it solves is the gap between ordinary Python web applications and AWS serverless infrastructure. Instead of asking a team to assemble Lambda functions, API Gateway routes, deployment packages, SSL certificates, scheduled events, and logging by hand, Zappa provides a command-line workflow and settings model for deploying, updating, rolling back, and operating Python applications as serverless services.

Key capabilities

  • Zappa deploys Python web applications to AWS Lambda and API Gateway through a command-line interface that supports initial deployments, updates, rollback, undeploy, and packaging.
  • It supports Flask, Django, Pyramid, and Bottle applications, including a documented Django management command workflow.
  • It configures scheduled tasks with AWS EventBridge rules, including multiple expressions, disabled events, and custom rule naming.
  • It provides operations commands for tailing logs, checking status, and invoking remote functions from the command line.
  • It handles SSL certificate deployment through AWS Certificate Manager, Let's Encrypt with DNS or HTTP authentication, or user-supplied certificates.
  • It supports local, remote AWS, and S3-backed environment variables, plus custom IAM roles for deployment and execution.

Who uses it and how

  • Teams use Zappa to move Flask or Django applications onto AWS Lambda and API Gateway without maintaining conventional web servers.
  • Developers use the Zappa CLI to create deployment settings, package the application, deploy it, update it, and roll back to a previous version.
  • Operators schedule recurring Python tasks through EventBridge rules and invoke functions remotely for maintenance or processing workflows.

Getting started

Install Zappa from PyPI, then use the Zappa CLI to run initial setup, generate settings, and deploy the application. The README also describes Docker workflows and notes that some settings should not be used with Docker deployments.

When to use it — and when not to

Zappa fits Python web applications that already use a supported framework and that can run on AWS Lambda and API Gateway. It is a weaker fit when a team does not want to operate AWS-specific concerns such as IAM roles, EventBridge scheduling, SSL certificates, environment variables, and deployment packaging. Docker deployments require attention because the README identifies settings that should not be used with Docker workflows, and the documented limitations and constraints mean teams should validate current behavior against their own AWS setup.

project readme (upstream, from github) — read inline

Zappa Rocks!

Zappa - Serverless Python

CI Coverage PyPI Slack

About

Zappa Slides

In a hurry? Click to see (now slightly out-dated) slides from Serverless SF!

Zappa builds and deploys server-less, event-driven Python applications (including, but not limited to, WSGI and ASGI web apps) on AWS Lambda + API Gateway. Think of it as "serverless" web hosting for your Python apps. That means infinite scaling, zero downtime, zero maintenance - and at a fraction of the cost of your current deployments!

If you've got a Python web app (including Django, Flask, FastAPI, and Starlette apps), it's as easy as:

$ pip install zappa
$ zappa init
$ zappa deploy

and now you're server-less!

What do you mean "serverless"?

Okay, so there still is a server - but it only has a 40 millisecond life cycle! Serverless in this case means "without any permanent infrastructure."

With a traditional HTTP server, the server is online 24/7, processing requests one by one as they come in. If the queue of incoming requests grows too large, some requests will time out. With Zappa, each request is given its own virtual HTTP "server" by Amazon API Gateway. AWS handles the horizontal scaling automatically, so no requests ever time out. Each request then calls your application from a memory cache in AWS Lambda and returns the response via Python's WSGI interface. After your app returns, the "server" dies.

With Zappa you only pay for the milliseconds of server time that you use, so it's many orders of magnitude cheaper than VPS/PaaS hosts like Linode or Heroku - and in most cases, it's completely free. Plus, there's no need to worry about load balancing or keeping servers online ever again.

It's great for deploying serverless microservices with frameworks like Flask and Bottle, and for hosting larger web apps and CMSes with Django. Zappa also supports ASGI frameworks like FastAPI, Starlette, and Quart — deploy async Python apps to Lambda with the same ease. You can use any WSGI or ASGI-compatible app you like! You probably don't need to change your existing applications to use it, and you're not locked into using it.

Zappa also lets you build hybrid event-driven applications with free SSL certificates, **global app dep

readme truncated — read the full docs on github

Frequently asked questions

Is Zappa free to use?

Zappa is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Zappa do?

Serverless Python

What is Zappa written in?

Zappa is primarily written in Python. Its source is publicly available at https://github.com/zappa/Zappa, and it has 3,695 GitHub stars.