Ingestion Pipeline

Data flows from provider APIs via CLI connectors into PostgreSQL.

Run make ingest-hetzner, make ingest-azure, etc. Each connector fetches locations, instance types, and prices; the ingestion service upserts into PostgreSQL and normalizes to EUR via FX rates. Idempotent — safe to re-run anytime.

To double-check ingested prices, run make verify-gcp (GCP), make verify-hetzner (Hetzner), or make verify-all. See Pricing data sources for the APIs and docs used per provider.

Pricing data sources

Instance pricing is ingested from the following APIs or config:

ProviderAPI / DocsAuth
GCPCloud Billing Catalog APIADC
AWSPrice List API, EC2 APIAWS credentials
AzureRetail Prices APINone (public)
HetznerHetzner Cloud APIAPI token
DigitalOceanDigitalOcean APIAPI token
ScalewayInstance APIAPI keys
OVHOVH API / Public CatalogOVH keys / none
UpCloudUpCloud APIUsername + password
Open Telekom CloudOTC Price APINone (public)
SeewebSeeweb ECS APIAPI token
Aruba, Exoscale, IONOS, gridscale, STACKIT, Elastx, Cyso CloudConfig (pricing pages)None
graph LR
    CLI["make ingest-* (CLI)"]
    CON["Connectors (GCP, AWS, Hetzner, Scaleway, …)"]
    SVC["Ingestion Service (upsert + FX)"]
    DB[("PostgreSQL")]
    CLI --> CON --> SVC --> DB
            

← All architecture topics