MinIO AIStor Tables Iceberg catalog with OLake Go
MinIO AIStor Tables is an Iceberg REST (representational state transfer) catalog built into the object store itself. The files and the catalog live in one system.
Short answer. To write Iceberg tables to AIStor Tables, create an OLake Go destination with catalog_type: rest and the AIStor endpoint with the /_iceberg path. Add the warehouse name and turn on SigV4 signing under the s3tables service name. Spark, Trino, Starburst and DuckDB read AIStor Tables with SigV4; ClickHouse reads it with an OAuth2 bearer token.
Key takeaways
- AIStor Tables serves the Iceberg REST catalog from the MinIO AIStor S3 port, with no separate catalog server or metastore.
- OLake Go writes to it as a Generic REST catalog with Signature Version 4 (SigV4) and the signing name
s3tables. - The Postgres to MinIO AIStor guide ran end to end, with Spark, DuckDB and Trino reading the same tables.
Last reviewed November 2026.
How OLake Go writes to AIStor Tables
OLake Go uses change data capture (CDC) where the source has it. Each sync uploads the Parquet data and delete files through AIStor's S3 API. It then commits the snapshot to the catalog at /_iceberg on the same host and port. Both requests are signed with the same access key.
Tables live in a warehouse, created once with mc table warehouse create. OLake Go puts the warehouse name in iceberg_s3_path, and every engine passes it as the catalog warehouse (MinIO: connecting query engines to AIStor Tables, checked Nov 2026).
MinIO documents AIStor Tables as supporting the Iceberg v3 REST catalog API, including deletion vectors (MinIO blog, checked Nov 2026). OLake Go picks the delete format from the target query engines on the job.
When to use it
- Your data already lives in MinIO AIStor, on premises or in your own cloud account.
- You want one system for the files, the catalog and the access keys, with no catalog service to run.
When not to use it
- You run the open source MinIO server. AIStor Tables is part of the licensed AIStor product; pair open source MinIO with Apache Polaris or Lakekeeper instead.
- A reader cannot sign Iceberg REST requests with SigV4 or use an OAuth2 bearer token. AIStor Tables accepts only those two.
What OLake Go needs
catalog_type:rest- Authentication OLake Go offers: SigV4 (signing name s3tables), OAuth2 client credentials.
- Full destination reference: MinIO AIStor Tables setup.
Engines that read MinIO AIStor Tables
| Engine | Reads | How |
|---|---|---|
| Apache Spark | Yes | REST catalog with rest.sigv4-enabled and rest.signing-name=s3tables |
| ClickHouse | Yes | REST with an OAuth2 bearer token from the catalog token endpoint (ClickHouse cannot sign catalog requests with SigV4) |
| DuckDB | Yes | ATTACH with AUTHORIZATION_TYPE sigv4 and SIGV4_SERVICE s3tables (DuckDB 1.5 or later; single-level namespaces only) |
| Starburst | Yes | Trino Iceberg REST connector with SigV4 (signing name s3tables) |
| Trino | Yes | REST catalog with SigV4 (signing name s3tables) (iceberg.rest-catalog.security=SIGV4 on Trino 477 and later) |
Each engine row comes from that engine's vendor documentation. The dated sources are on the engine's page, linked in the first column.
Guides that use MinIO AIStor Tables
Frequently asked questions
How does OLake Go authenticate to AIStor Tables?
With SigV4. The destination is a Generic REST catalog with rest_auth_type sigv4, rest_signing_name s3tables, a non-empty signing region, and the AIStor access key and secret key. The Postgres to MinIO AIStor guide shows the full destination.json.
Which engines read AIStor Tables?
MinIO documents Apache Spark, Trino, Starburst, DuckDB 1.5 or later, Dremio 26.0 or later and PyIceberg with SigV4, and ClickHouse with an OAuth2 bearer token. Spark, DuckDB and Trino were tested on this site.
Does AIStor Tables need a license?
Yes. MinIO AIStor needs a license file to run. MinIO's free tier license covers one compute resource with one or more drives, which is what the tested guide used.