Helpers for Django Zappa deployments
Project description
zappa-django-utils
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for zappa_django_utils-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d6d14b8cf4184c025f224d34657d56986de2f6bbde48573efd264daa92046a5 |
|
MD5 | fca977a17e28534106e66064020cf251 |
|
BLAKE2b-256 | 49db2438d10cc85916bd12852008e415a228013f1d35abdc3d271e7805df268c |