Three shapes, not thirty products
Every storage service is one of three shapes, and the shape determines the access pattern it can serve efficiently.
| Shape | You address | Looks like | Built for |
|---|---|---|---|
| Object | A whole item by key | A giant key-value store of files | Write once, read many: media, backups, logs, data lakes |
| Block | Numbered blocks of a disk | An unformatted hard drive | A filesystem or database that manages its own layout |
| File | Paths in a shared hierarchy | A network drive | Many machines needing the same directory tree |
On AWS these are S3, EBS and EFS respectively. The distinctions are not marketing: they follow from what each one lets you do to part of an item.
Object storage has no concept of editing byte 4,096 of an object. You replace the whole object. That constraint is exactly what allows it to be enormously scalable, cheap, and reachable over HTTP from anywhere.
Block storage lets you write any block at any offset, which is what a database needs to update a row in place, and that requirement is why a block volume attaches to one machine rather than being shared freely.
Gotcha: using object storage as a filesystem is the classic mistake. Code that opens a file, seeks, and writes a few bytes will either fail or silently rewrite the entire object every time, turning a cheap store into an expensive and slow one.

