Introduction
Zappa makes it simple to deploy standard Python WSGI applications — Django, Flask, Bottle, and others — to AWS Lambda and API Gateway. It eliminates server management while keeping the familiar Python web framework workflow intact.
What Zappa Does
- Packages and deploys any WSGI-compatible Python app to AWS Lambda
- Automatically configures API Gateway as the HTTP frontend
- Handles CloudWatch event scheduling for periodic tasks
- Manages multiple deployment stages (dev, staging, production)
- Supports binary uploads, large projects via S3 slim packaging, and async task execution
Architecture Overview
Zappa wraps your Python application in a Lambda-compatible handler that translates API Gateway events into WSGI requests. It uses S3 for deployment artifact storage, CloudFormation for resource provisioning, and CloudWatch Events for scheduled tasks. The entire infrastructure is managed through a single zappa_settings.json file.
Self-Hosting & Configuration
- Install with
pip install zappainside a virtualenv - Run
zappa initto generatezappa_settings.jsoninteractively - Configure
s3_bucket,aws_region, andruntimein settings - Set
slim_handler: truefor projects exceeding Lambda's 50 MB package limit - Use
zappa scheduleandzappa unschedulefor cron-style recurring tasks
Key Features
- Zero-downtime deployments with automatic rollback support
- Native Django and Flask support with management command passthrough
- Async task execution via
@taskdecorator without a separate queue - Let's Encrypt SSL certificate provisioning with
zappa certify - Tail CloudWatch logs in real time with
zappa tail
Comparison with Similar Tools
- Serverless Framework — multi-cloud, YAML-heavy; Zappa is Python-only but requires no boilerplate
- AWS Chalice — AWS-native micro-framework; Zappa deploys full WSGI apps, not just API handlers
- AWS SAM — CloudFormation-based; Zappa abstracts away all template management
- Mangum — ASGI adapter for Lambda; Zappa handles WSGI and includes full deployment tooling
FAQ
Q: Which Python frameworks does Zappa support? A: Any WSGI-compatible framework including Django, Flask, Bottle, Falcon, and Pyramid.
Q: Can Zappa handle large projects? A: Yes. The slim handler option uploads code to S3 and loads it at invocation time, bypassing Lambda's package size limit.
Q: Is Zappa still maintained? A: The original repo is in maintenance mode. Community forks continue active development.
Q: Does Zappa support async Python? A: Zappa itself targets WSGI (synchronous). For ASGI apps, Mangum is the recommended alternative.