New to Kestra?
Use blueprints to kickstart your first workflows.
Trigger DataHub ingestion from a webhook after schema migrations. Kestra re-catalogs the changed Postgres schema the moment DDL lands, with Slack reports.
The gap between a nightly catalog sync and a morning migration is where wrong decisions get made: a column was renamed at 09:00, the catalog says otherwise until 05:00 tomorrow, and every consumer in between reads stale documentation. This blueprint closes that gap. Your migration pipeline calls a Kestra webhook with the schema it just changed, and io.kestra.plugin.datahub.Ingestion runs a postgres recipe scoped by schema_pattern to exactly that schema. The sync is small, fast, and immediate, and Slack confirms the catalog caught up.
migration_webhook trigger starts the flow, and every reference to the schema uses {{ trigger.body.schema ?? inputs.schema_name }}, so manual executions fall back to the schema_name input.ingest_changed_schema (io.kestra.plugin.datahub.Ingestion) runs a postgres source whose schema_pattern allow list is anchored to that single schema, re-extracting only the tables and views the migration could have touched.datahub-rest sink pushes the fresh metadata to the GMS server, with all connection details resolved from secrets.notify names the re-cataloged schema in Slack so the migration author can verify their DDL in DataHub, and the errors block alerts when the sync fails, the one moment when catalog and database are known to disagree.schema_pattern, so a migration to one schema never triggers a full-database scan.trigger.body with input fallback pattern, keeping the flow runnable by hand for backfills.Event-driven cataloging needs something listening for the event, holding the database and DataHub credentials, and owning the failure path. Kestra's webhook trigger gives the migration pipeline a stable URL with no credentials to manage on the caller's side beyond the webhook key, secrets stay in Kestra, and every migration-triggered sync is an execution you can audit later. Combine it with a scheduled full sync and you get fast reaction to changes plus a periodic safety net.
acryldata/datahub-ingestion container image.DATAHUB_GMS_URL: URL of the DataHub GMS server.DATAHUB_TOKEN: DataHub personal access token with permission to ingest metadata.POSTGRES_HOST_PORT: host and port of the migrated database.POSTGRES_DATABASE: database name.POSTGRES_USERNAME: Postgres user for metadata extraction.POSTGRES_PASSWORD: password for that user.SLACK_WEBHOOK_URL: Slack incoming webhook URL.schema_name set to a real schema and confirm it appears fresh in DataHub.datahub_after_migration key, as the last step of your migration pipeline, sending the changed schema in the JSON body.table_pattern for very large schemas.io.kestra.plugin.core.flow.Subflow call from your Kestra-managed migration flow instead of the webhook when migrations already run in Kestra.key to a random value before production and rotate it like any credential.