Skip to content

S3 Tables

Protocol: REST JSON Signing service: s3tables Endpoint: http://localhost:4566

Floci emulates the S3 Tables control plane for local development, Terraform convergence, and SDK integration tests. It is a separate AWS service from S3: S3 Tables requests are signed as s3tables and use REST JSON routes such as /buckets and /tables/{tableBucketARN}/{namespace}.

Metadata-only scope

This service stores table-bucket, namespace, table, policy, maintenance configuration, and metadata-location state. It does not run an Apache Iceberg engine or create data-plane artifacts: manifests, warehouse objects, queries, compaction, snapshot expiry, replication, encryption-management, and metrics are intentionally outside this implementation.

Supported operations

Area Operations
Table buckets CreateTableBucket, GetTableBucket, ListTableBuckets, DeleteTableBucket
Bucket policy PutTableBucketPolicy, GetTableBucketPolicy, DeleteTableBucketPolicy
Bucket maintenance PutTableBucketMaintenanceConfiguration, GetTableBucketMaintenanceConfiguration
Namespaces CreateNamespace, GetNamespace, ListNamespaces, DeleteNamespace
Tables CreateTable, GetTable, ListTables, DeleteTable, RenameTable
Metadata location GetTableMetadataLocation, UpdateTableMetadataLocation
Table policy PutTablePolicy, GetTablePolicy, DeleteTablePolicy
Table maintenance PutTableMaintenanceConfiguration, GetTableMaintenanceConfiguration

Tables must use ICEBERG format. UpdateTableMetadataLocation implements optimistic concurrency: supply the table's current versionToken; a stale token returns ConflictException.

Example

export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test

bucket_arn=$(aws s3tables create-table-bucket --name local-warehouse --query arn --output text)
aws s3tables create-namespace --table-bucket-arn "$bucket_arn" --namespace analytics
aws s3tables create-table \
  --table-bucket-arn "$bucket_arn" \
  --namespace analytics \
  --name events \
  --format ICEBERG

Configuration

Variable Default Description
FLOCI_SERVICES_S3TABLES_ENABLED true Enables the S3 Tables REST JSON service.
FLOCI_STORAGE_SERVICES_S3TABLES_MODE Global storage mode Optional per-service storage-mode override.
FLOCI_STORAGE_SERVICES_S3TABLES_FLUSH_INTERVAL_MS 5000 Persistence flush interval for hybrid storage.