Skip to main content

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

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 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.

  1. Configure the DATABASES setting to use a database URL (recommended):

    Note: This is dependent on the dj-database-url package which can be installed via pip 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")
        )
    }
    
  2. 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

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.

  1. Acquire API token from Passman.
    • Request access from the SRE team.
    • Note: You will need access to the platform group in Passman.
  2. 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


Download files

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

Source Distribution

dbt_copilot_python-0.1.5.dev1.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

dbt_copilot_python-0.1.5.dev1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file dbt_copilot_python-0.1.5.dev1.tar.gz.

File metadata

  • Download URL: dbt_copilot_python-0.1.5.dev1.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

Hashes for dbt_copilot_python-0.1.5.dev1.tar.gz
Algorithm Hash digest
SHA256 5297a46fd8645acb8d5ff66b5e46c33c743edc84142c03370aaf6157e523d36a
MD5 93ad10604378690407d721384e0e818d
BLAKE2b-256 0d5a235a651e96e28150d35abd0c988132df492a2d8dfda1fb0ab3a9c122adfe

See more details on using hashes here.

File details

Details for the file dbt_copilot_python-0.1.5.dev1-py3-none-any.whl.

File metadata

File hashes

Hashes for dbt_copilot_python-0.1.5.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 87b758afadae39574fdfb36a622f5a8f19d50c823e169b5abbf515f500ea9072
MD5 13b22380bcccd95c60d3091c6aa66b8d
BLAKE2b-256 7164d1f3bc0a71595eef00a6ea456fae7d512dcc69c9aa1723e905546086f7b8

See more details on using hashes here.

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