New to Kestra?
Use blueprints to kickstart your first workflows.
Catalog S3 data lake files in DataHub with Kestra. A weekly ingestion recipe scans Parquet paths and keeps lake datasets discoverable, with Discord reports.
Warehouses catalog themselves through their information schema; a data lake is just files, and files answer no questions. This blueprint points DataHub's s3 source at your lake through io.kestra.plugin.datahub.Ingestion. The recipe scans a path spec, groups files into datasets using the {table} placeholder, infers each dataset's schema from the Parquet files themselves, and publishes the result to your GMS server. A weekly schedule keeps the catalog tracking the lake as new datasets land, and Discord hears about every scan and every failure.
ingest_lake_metadata (io.kestra.plugin.datahub.Ingestion) runs the standard DataHub ingestion recipe in its container image.s3 source scans the path_specs entry built from the path_spec input. The {table} placeholder makes every matching folder one DataHub dataset, so curated/orders/*.parquet becomes a dataset named orders with a schema read from the files.aws_config, and the region stays an input so the same flow covers buckets in different regions.datahub-rest sink publishes the datasets, with the GMS URL and token resolved from secrets.notify posts the scan confirmation to Discord, the errors block alerts on failure, and a disabled-by-default Schedule trigger reruns the scan every Monday at 06:00.A lake scan is exactly the kind of job that dies quietly in cron: it takes minutes, it fails on expired credentials or a renamed prefix, and nobody notices until someone searches for a dataset that never got cataloged. Kestra gives the recipe a schedule, secrets that rotate without touching the flow, retries for transient S3 or GMS errors, and an alert path that names the failure. The recipe itself stays the plain DataHub YAML you would run with datahub ingest.
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.AWS_ACCESS_KEY_ID: AWS access key with read access to the bucket.AWS_SECRET_ACCESS_KEY: matching AWS secret key.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.path_spec to a real prefix in your lake and execute the flow.disabled: false on the weekly trigger.path_specs entries to cover raw, staging, and curated zones in one scan.profiling for row counts and null ratios on smaller datasets.{partition_key[0]}={partition[0]} placeholders in the path spec so partitioned tables catalog as single datasets.aws_config.