Skip to main content

Project to deploy dbt as a serverless application in Cloud Run

Project description

Serverless Endpoint for dbt runs

GitHub Actions GitHub Actions Packaged with Poetry Code style: black Imports: isort Type checked with mypy codecov

PyPI Latest Release Package Status License

The goal of this project is to avoid the need of an Airflow server in order to schedule dbt tasks like runs, snapshots, docs...

It currently encapsulate few dbt commands into a FastAPI server which can be deployed on Cloud Run in a serverless fashion. That way we reduce costs as Cloud Run is terribly cheap!

You can also test it locally or through Docker without it being serverless, but it doesn't make sense as you already have the dbt CLI for this.

Usage

You'll need to make use of Google ADC (Authentification Default Credentials). Meaning either :

  • gcloud cli already identified
  • or a deployment through a google product with a service account having the roles/bigquery.admin
  • or a GOOGLE_APPLICATION_CREDENTIALS env variable for a specific local keyfile

Local deployment

With pip

pip install dbt-serverless
python run uvicorn dbt_serverless.main:app --host 0.0.0.0 --port 8080 --reload

With poetry

poetry add dbt-serverless
poetry run uvicorn dbt_serverless.main:app --host 0.0.0.0 --port 8080 --reload

Docker deployment

Simple docker image to build dbt-serverless for local or cloud run testing (for example).

ARG build_for=linux/amd64

FROM --platform=$build_for python:3.10-slim-bullseye

ARG DBT_PROJECT
ARG PROFILES_DIR

WORKDIR /usr/app

RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir dbt-serverless

COPY ${DBT_PROJECT}/ ${PROFILES_DIR}/profiles.yml ${DBT_PROJECT}/

ENTRYPOINT ["uvicorn", "dbt_serverless.main:app", "--host", "0.0.0.0", "--port", "8080"]

If you're not on a Google product (like Cloud Run), you will need to specify google creds at docker runtime.

For example you can add these cli parameters at runtime, if you're testing and deploying it locally :

    -v "$(HOME)/.config/gcloud:/gcp/config:ro" \
    -v /gcp/config/logs \
    --env CLOUDSDK_CONFIG=/gcp/config \
    --env GOOGLE_APPLICATION_CREDENTIALS=/gcp/config/application_default_credentials.json \
    --env GOOGLE_CLOUD_PROJECT=$(PROJECT_ID) \

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_serverless-0.1.2.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

dbt_serverless-0.1.2-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file dbt_serverless-0.1.2.tar.gz.

File metadata

  • Download URL: dbt_serverless-0.1.2.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.6 Linux/5.15.0-1030-azure

File hashes

Hashes for dbt_serverless-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ce3e75597aba31b256959b6e9432a38ce23d9c49c211d2981ead424720b371c2
MD5 9b9f9d928f64ce3dd879b3361acc5fe9
BLAKE2b-256 d3b2a0a84517b3099b81e308086253672d413e10afeeac99ef4a8017dedd2640

See more details on using hashes here.

File details

Details for the file dbt_serverless-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: dbt_serverless-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.6 Linux/5.15.0-1030-azure

File hashes

Hashes for dbt_serverless-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f115fd4f9fd30478317de6f48e3e92de0d2e108c6eac00d7fa3e8d3fdb8775c5
MD5 f96de7ddb720f313056f52c11770a59b
BLAKE2b-256 dd51247a0477e2d01426855c3cc041f8cca8aa7cb8bf3af152799750c4ec0565

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