Helper functions to run Django and Flask applications in AWS Copilot/ECS.
Project description
DBT Copilot Python
A set of utility functions for running Django & Flask apps in AWS ECS via AWS Copilot.
Using dbt-copilot-python
Supported Python versions
3.9, 3.10, 3.11 and 3.12.
Installation
pip install dbt-copilot-python
Usage
ALLOWED_HOSTS
setting
Add the ECS container IP to ALLOWED_HOSTS
setting so that the Application Load Balancer (ALB) healthcheck will succeed:
from dbt_copilot_python.network import setup_allowed_hosts
ALLOWED_HOSTS = [...]
ALLOWED_HOSTS = setup_allowed_hosts(ALLOWED_HOSTS)
Celery health check
Add the health check in your application's Celery config file...
from dbt_copilot_python.celery_health_check import healthcheck
celery_app = Celery("application_name")
...
celery_app = healthcheck.setup(celery_app)
Add the health check to the Celery worker service in docker-compose.yml
...
healthcheck:
test: [ "CMD-SHELL", "python -m dbt_copilot_python.celery_health_check.healthcheck" ]
interval: 10s
timeout: 5s
retries: 2
start_period: 5s
In your *-deploy
codebase, add the health check to the Celery worker service in copilot/celery-worker/manifest.yml
...
healthcheck:
command: [ "CMD-SHELL", "launcher bash -c 'python -m dbt_copilot_python.celery_health_check.healthcheck'" ]
interval: 10s
timeout: 5s
retries: 2
start_period: 10s
DATABASES
setting
To configure the DATABASES
setting from an RDS JSON object stored in AWS Secrets Manager, there are two options.
-
Configure the
DATABASES
setting to use a database URL (recommended):Note: This is dependent on the
dj-database-url
package which can be installed viapip install dj-database-url
.import dj_database_url from dbt_copilot_python.database import database_url_from_env DATABASES = { "default": dj_database_url.config( default=database_url_from_env("DATABASE_ENV_VAR_KEY") ) }
-
Configure the
DATABASES
setting to use a dictionary containing the settings:from dbt-copilot-python.database import database_from_env DATABASES = database_from_env("DATABASE_ENV_VAR_KEY")
Contributing to dbt-copilot-python
Requirements
- Poetry;
pip install poetry
Install dependencies & pre-commit hooks
poetry install && poetry run pre-commit install
Run the tests
poetry run pytest
Publishing
To publish the Python package dbt-copilot-python
, you will need an API token.
- Acquire API token from Passman.
- Request access from the SRE team.
- Note: You will need access to the
platform
group in Passman.
- Run
poetry config pypi-token.pypi <token>
to add the token to your Poetry configuration.
Update the version, as the same version cannot be published to PyPi.
poetry version patch
More options for the version
command can be found in the Poetry documentation. For example, for a minor version bump: poetry version minor
.
Build the Python package.
poetry build
Publish the Python package.
Note: Make sure your Pull Request (PR) is approved and contains the version upgrade in pyproject.toml
before publishing the package.
poetry publish
Check the PyPi Release history to make sure the package has been updated.
For an optional manual check, install the package locally and test everything works as expected.
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
File details
Details for the file dbt_copilot_python-0.2.0.tar.gz
.
File metadata
- Download URL: dbt_copilot_python-0.2.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.0 CPython/3.11.5 Darwin/23.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20a23aba6b40c9484f0f8b758bfc7ca18321281c26c709a9346dca8b7f2279e7 |
|
MD5 | adddd284b73f96241392c5ac8420588e |
|
BLAKE2b-256 | b7a02c9ca7d0f5a0c3bda820fbeb441e442fd76f186bfa1464d272dbbed3a3bc |
File details
Details for the file dbt_copilot_python-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: dbt_copilot_python-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.0 CPython/3.11.5 Darwin/23.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c2191c7b867effb32b249c08e5024eb73ca6a5007a4ef8b7617807f28c8ef59 |
|
MD5 | 7d0731673d6cd759239adb3f5903b471 |
|
BLAKE2b-256 | 577943c885edb8d5476cf47fe7bb01cb0ba0deb02f7eba05516e91ce64000e08 |