Project to deploy dbt as a serverless application in Cloud Run
Project description
Serverless Endpoint for dbt runs
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
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_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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce3e75597aba31b256959b6e9432a38ce23d9c49c211d2981ead424720b371c2 |
|
MD5 | 9b9f9d928f64ce3dd879b3361acc5fe9 |
|
BLAKE2b-256 | d3b2a0a84517b3099b81e308086253672d413e10afeeac99ef4a8017dedd2640 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f115fd4f9fd30478317de6f48e3e92de0d2e108c6eac00d7fa3e8d3fdb8775c5 |
|
MD5 | f96de7ddb720f313056f52c11770a59b |
|
BLAKE2b-256 | dd51247a0477e2d01426855c3cc041f8cca8aa7cb8bf3af152799750c4ec0565 |