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. |