Static Iglu repository
If you're a Snowplow CDI customer, you don't need to manage Iglu directly — it's included in your pipeline. Use Event Studio or the Snowplow CLI to manage your schemas. This page is for Self-Hosted customers.
A static Iglu repository is a read-only schema registry served from a static website. It's a lighter alternative to Iglu Server when you don't need an authenticated write API. Iglu Central is itself a static repo.
You can host a static repo on any HTTP server that can serve files with a directory structure — for example, Nginx, Apache, Amazon S3, Google Cloud Storage, or Azure Blob Storage.
Some loaders (notably RDB loader) use the schema-list API endpoints that are only fully supported by Iglu Server. If you use a static repo with these loaders, you must generate the schema-list objects when you publish. igluctl generates them by default; if you upload schemas to your host by hand, the lists won't exist and the loader will fail.
Schema file structure
Iglu repositories use a fixed folder hierarchy keyed by vendor, schema name, format, and version:
schemas
└── com.acme
└── ad_click
└── jsonschema
└── 1-0-0
The version file (1-0-0) has no extension and contains the self-describing JSON schema. See Self-describing schemas for what goes inside.
Publish schemas
Prepare your schemas locally in the folder structure above. Then publish them to your HTTP host.
If you're hosting on Amazon S3, igluctl static s3cp uploads schemas and generates the schema-list objects loaders rely on in one step:
igluctl static s3cp /path/to/schemas my-iglu-bucket --region eu-west-1
For any other host, generate the schema-list objects locally with igluctl, then upload the resulting schemas directory to your web root. See the igluctl reference for details.
Make sure schema files are accessible to whatever clients you intend to use — typically that means making them publicly readable, since static repos don't support authentication.
Configure the Iglu resolver
Once your registry is live, add it to your Iglu resolver configuration:
{
"name": "Acme static repo",
"priority": 0,
"vendorPrefixes": [ "com.acme" ],
"connection": {
"http": {
"uri": "https://schemas.acme.com"
}
}
}
Static repos don't require an apikey.