Glossary Entry

Amazon S3 for Data Lakehouses: Iceberg, S3 Tables, and Storage Costs

Amazon S3 is AWS object storage that keeps files as objects in buckets behind an HTTP API. See how Iceberg runs on S3, what S3 Tables adds, and what it costs.

Written by Alex Merced

Amazon S3 (Simple Storage Service) is the object storage service of Amazon Web Services. It launched in March 2006 as one of the first generally available AWS services. S3 stores data as objects in buckets, addressed by key and accessed over an HTTP API, and AWS handles the hardware, replication, and capacity behind it.

For data teams, S3 is where a large share of data lakes and lakehouses keep their files. A bucket can hold a 10 KB JSON file or petabytes of Apache Parquet, and you pay for what you store and the requests you make, not for disks you provision.

Durability and Consistency

S3 is designed for 99.999999999% (“eleven nines”) durability of objects over a year. Most storage classes store data redundantly across at least three Availability Zones in a region; the One Zone classes are the exception. Since December 2020, S3 provides strong read-after-write consistency for all PUT and DELETE operations, so a reader sees a new object or overwrite as soon as the write succeeds.

Durability and availability are different numbers. S3 Standard is designed for 99.99% availability, and its SLA credits apply below 99.9% monthly uptime.

The S3 API

The S3 API (PutObject, GetObject, ListObjectsV2, DeleteObject, multipart uploads) has become a common interface for object storage. Spark, Trino, Dremio, DuckDB, Flink, and most data tools can read and write through it, and many other storage systems, including Cloudflare R2, Ceph, and on-premises appliances, offer S3-compatible endpoints. Compatibility varies in the details (conditional writes, listing behavior, checksums), so test the specific features your table format and engines rely on.

Running Apache Iceberg on S3

Object storage has no real directories and no atomic rename, which made older Hive-style tables slow and fragile on S3. Apache Iceberg was designed around those limits:

  • No directory listing for planning. Iceberg tracks every data file in manifests, so engines read metadata instead of listing prefixes.
  • Atomic commits through the catalog. A commit swaps the table’s current metadata pointer in a catalog such as Apache Polaris, AWS Glue, or Nessie, instead of renaming files.
  • Request rate limits. S3 supports at least 3,500 write and 5,500 read requests per second per prefix. Iceberg’s object storage location provider (write.object-storage.enabled) spreads files across hashed prefixes to avoid hot spots.

Amazon S3 Tables, announced at re:Invent in December 2024, adds table buckets that store Iceberg tables natively, with built-in compaction, snapshot expiry, and unreferenced file cleanup, plus an Iceberg REST endpoint for engines. The tradeoff versus general purpose buckets plus your own catalog is convenience against control over maintenance and catalog choice.

Storage Classes and Lifecycle Costs

S3 offers several storage classes, and two mechanisms move data between them:

MechanismHow it decidesLakehouse caution
Lifecycle rulesObject age or prefix, on a schedule you defineObjects moved to Glacier Flexible Retrieval or Deep Archive must be restored before reading, so an Iceberg query that touches them fails
S3 Intelligent-TieringObserved access patterns, per objectFrequent, infrequent, and archive instant access tiers stay readable; optional archive tiers do not

For Iceberg tables, move cold data in ways the table metadata knows about, or keep it in classes that stay readable without a restore step, such as Standard-IA or Glacier Instant Retrieval. Agent-Driven Storage Tiering for Apache Iceberg walks through a path-safe approach, and Connect Amazon S3 to Dremio Cloud shows how to query S3 data directly. See also object storage.

Summary

Amazon S3 provides durable, elastic object storage behind a widely copied API, and it is a common storage layer for lakehouses. Iceberg makes S3 behave like a reliable table store through manifests and catalog commits, S3 Tables offers a managed variant, and storage class choices need to account for how query engines read the files.

Learn More

To learn more about the Data Lakehouse, read The Lakehouse Built for Everyone by Alex Merced. You can find this and other books by Alex Merced at books.alexmerced.com.

Related Terms

What is Object Storage?

Object storage keeps data as objects with keys and metadata in a flat namespace, as in Amazon S3. See how Apache Iceberg builds ACID tables on top of it.

What is Storage Layer?

The storage layer is the tier of a data architecture that holds the physical data files, such as Parquet in object storage, separate from the compute engines.

AWS Glue for Iceberg Lakehouses: Data Catalog, ETL, and Engines

AWS Glue is Amazon's serverless data integration service with a shared Data Catalog. See how Glue serves Iceberg tables to Spark, Athena, Dremio, and Trino.

What is Data Lakehouse?

A data lakehouse is an architecture that adds warehouse features like ACID transactions and schema enforcement to data lake files via open formats like Iceberg.

What is Apache Iceberg?

Apache Iceberg is an open table format for large analytic tables on object storage, covering its metadata tree, hidden partitioning, time travel, and catalogs.

What is Apache Polaris?

Apache Polaris is an open-source implementation of the Apache Iceberg REST catalog spec, providing centralized role-based access control for many query engines.

What is File Storage?

File storage organizes data in a hierarchy of folders shared over NFS or SMB. See where it fits next to object storage and why it struggles at lakehouse scale.

What is Google Cloud Storage (GCS)?

Google Cloud Storage is Google Cloud's object storage service. Learn about multi-region buckets, storage classes, lifecycle rules, and GCS as lakehouse storage.

MinIO and Apache Iceberg: S3-Compatible Storage After the Community Edition

MinIO is an S3-compatible object storage server often used for local Iceberg lakehouses. Here is its 2026 status and what to run for dev and production.

Work with Alex