Skip to main content

Helpers for Django Zappa deployments

Project description

zappa-django-utils

PyPI Slack Gun.io Patreon

Small utilities for making Zappa deployments slightly easier for Django applications.

This project was inspired by Edgar Roman's Zappa Django Guide.

Installation

Install via pip:

$ pip install zappa-django-utils

Add to your installed apps:

INSTALLED_APPS += ('zappa_django_utils',)

Usage

Using an S3-Backed Database Engine

ZDU includes the ability to use s3sqlite, an S3-synced SQLite database as a Django database engine.

This will cause problems for applications with concurrent writes**, but it scales very well for high-read applications that don't have concurrent writes (like CMSes), and it's orders of magnitude cheaper than AWS RDS.

** Concurrent writes will often be lost and not show up in concurrent readers. This is because the database is transferred between S3 storage and the Lambda instance for each request.

Django Settings & Commands

DATABASES = {
    'default': {
        'ENGINE': 'zappa_django_utils.db.backends.s3sqlite',
        'NAME': 'sqlite.db',
        'BUCKET': 'your-db-bucket'
    }
}

And... that's it! Since SQLite keeps the database in a single file, you will want to keep it as small and defragmented as possible. It is good to occasionally perform a database vacuum, especially after deleting or updating data. There's a command to vacuum your database:

zappa manage [instance] s3sqlite_vacuum

Creating a Postgres Database

Once you have your RDS set up, your VPC/Subnet/Security Groups set up, and your DATABASES setting set up, you can create the database with:

$ zappa manage <stage> create_pg_db

Then you're ready to python manage.py makemigrations and zappa update; zappa manage migrate!

Creating a Default Admin User

You'll probably need a default user to manage your application with, so you can now:

$ zappa manage <stage> create_admin_user

Or you can pass some arguments:

$ zappa manage <stage> create_admin_user one two three

This will internally make this call:

User.objects.create_superuser('one', 'two', 'three')

Now log in and immediately change the admin user's email and password.

Creating/Dropping a Postgres Schema

You can create a Postgres schema with:

$ zappa manage create_pg_schema

and drop it with:

$ zappa manage drop_pg_schema

License

(c) 2017, Rich Jones, MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zappa-django-utils-0.4.0.tar.gz (8.4 kB view hashes)

Uploaded Source

Built Distribution

zappa_django_utils-0.4.0-py3-none-any.whl (10.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page