/pg_dump-python

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

Python pg_dump

This is a Docker-compatible Python script to make a dump of a postgres database, puts it in a gzip compressed tarfile, and pushes it to an S3 bucket.

It uses Hashicorp Vault to get the authentication

This is intended to be ran under fargate or a lambda function.

Use lambda if the total database size is less than 256 MB due to disk limitations, otherwise use fargate.

Make sure the lambda or fargate container has IAM access to s3:PutObject and ses:SendEmail

Environment Variables

Variable Details Example
VAULT_SECRET the secret to pull from Hashicorp's Vault secret/testing-postgres
VAULT_TOKEN the token used to access the vault s.7NaWxclhAr3EE22Z8guUQXw6
VAULT_HOST the vault instance to connect to https://vault.domain.com
BUCKET_NAME The S3 bucket to upload the backup to example-dev-backups
POSTGRES_HOST The postgres host to connect to database
POSTGRES_USERNAME The postgres username to authenticate with username
POSTGRES_PASSWORD The postgres password to authenticate with password
SES_REGION The region that SES is working in us-east-1
EMAIL_FROM The email address to send emails from backups@domain.com
EMAIL_TO The list of email addresses to send to, separated by semicolons user@domain.com;user1@domain.com
POSTGRES_DATABASE The postgres database to backup database_name