···83838484- List buckets (`GET /`)
8585- List objects (`GET /{bucket}`)
8686+- Download objects (`GET /{bucket}/{key}`)
8687- Create bucket (`PUT /{bucket}`)
8788- Upload object (`PUT /{bucket}/{key}`)
8889- Delete empty bucket (`DELETE /{bucket}`)
8990- Delete object (`DELETE /{bucket}/{key}`)
90919292+## Lakehouse formats
9393+9494+This has been tested with Polars + Delta Lake:
9595+9696+```
9797+In [25]: df.write_delta("s3://deltalake/df", storage_options={"AWS_ENDPOINT_URL": "http://localhost:8041", "AWS_ALLOW_HTTP": "true"})
9898+9999+In [26]: pl.read_delta("s3://deltalake/df", storage_options={"AWS_ENDPOINT_URL": "http://localhost:8041", "AWS_ALLOW_HTTP": "true"})
100100+Out[26]:
101101+shape: (4, 2)
102102+┌─────┬─────┐
103103+│ id ┆ col │
104104+│ --- ┆ --- │
105105+│ i64 ┆ str │
106106+╞═════╪═════╡
107107+│ 0 ┆ a │
108108+│ 1 ┆ b │
109109+│ 2 ┆ c │
110110+│ 3 ┆ d │
111111+└─────┴─────┘
112112+```
113113+91114## Future work
9211593116We would like to fix these at some point:
9494-- Downloads
95117- Proper deletion of dangling "directories"
118118+- Whatever is needed for open table formats (DuckLake, Apache Iceberg, Delta Lake)
119119+ to work almost perfectly
120120+- Virtual-hosted-style addressing (for now, only path-style addressing is supported)
121121+122122+If you see more gaps, feel free to open an issue.
123123+But it might be deemed out of scope (see below).
9612497125## Limitations
9812699127These are by design and will not be fixed:
100100-- Path-style addressing only (virtual-hosted-style not supported)
101128- No authentication or authorization
102129- No multipart uploads
103130- No versioning
104104-- No ETags for uploaded objects
131131+- No `.` and `..` in full key names
105132- No bit-by-bit compatibility with Amazon S3 server responses