S3
2 min read

The S3 Protocol is a widely-adopted RESTful interface for interacting with object storage systems. Originating from AWS, it has become a standard approach for managing and accessing unstructured data across many platforms, both cloud-based and on-premises.

The S3 Protocol defines a set of HTTP(S) operations for storing, retrieving, and managing objects in a scalable object storage environment. It uses standard web protocols and conventions to offer a simple, extensible interface for developers.

• Interface type: RESTful HTTP API
• Operations: CRUD (Create, Read, Update, Delete) on buckets and objects
• Data format: Objects are stored as opaque blobs; metadata is exchanged in XML or JSON
• Transport: HTTP/HTTPS
• Authentication: HMAC-based signatures or token-based mechanisms

Core Components and Architecture

The protocol revolves around two main abstractions:

Buckets

• Containers or namespaces for objects.
• Must have globally unique names (depending on implementation).
• Represented as URLs or hostnames.

Objects

• The fundamental unit of storage, consisting of:
• Data: Raw bytes (file, image, video, etc.)
• Metadata: Key-value pairs describing the object
• Identified uniquely within a bucket by an object key (or name).

Additional Concepts

• Regions/Endpoints: Logical or physical locations where data is stored.
• Versioning: Optional feature to maintain multiple versions of an object.
• Access Control: Policies or ACLs to manage read/write permissions.

Protocol Fundamentals

The S3 protocol uses standard HTTP verbs mapped to operations on resources:

HTTP VerbResourceAction
GETBucket/ObjectRetrieve metadata or data
PUTBucket/ObjectCreate or replace resource
DELETEBucket/ObjectRemove resource
HEADBucket/ObjectRetrieve metadata only
POSTMultipart UploadInitiate or complete uploads

URL Structure

Requests often use one of two URL styles:

• Virtual-hosted style:

https://{bucket-name}.storage-service.com/{object-key}

• Path style:

https://storage-service.com/{bucket-name}/{object-key}

S3-Compatible Implementations

Numerous storage solutions implement the S3 protocol (or subsets of it) to provide interoperability:

ImplementationDescription
MinIOOpen-source, high-performance object store supporting S3 API
Ceph Object GatewayScalable distributed storage with S3-compatible interface
DigitalOcean SpacesCloud object storage service with S3 compatibility
WasabiCloud object storage with S3 API support
Backblaze B2Cloud storage service with optional S3 compatibility