S3
Objects, multipart, versioning, lifecycle, notifications, replication, website hosting.
fakecloud implements 107 of 107 S3 operations at 100% Smithy conformance.
Supported features
- Objects — GET/PUT/DELETE/HEAD, versioning, delete markers, metadata, tags, ACLs
- Multipart uploads — full lifecycle; resumable across restarts in persistent mode
- Lifecycle — expiration and storage class transitions via
/_fakecloud/s3/lifecycle-processor/tick - Notifications — delivery to SNS, SQS, Lambda, and EventBridge on object create/delete
- Versioning — enable/suspend, list object versions, delete specific versions
- Encryption — SSE-S3, SSE-KMS, SSE-C
- Bucket subresources — policy, CORS, lifecycle, logging, website, public access block, object lock, replication, ownership, inventory, encryption, accelerate, request payment, tagging
- Object Lock — legal hold, retention modes
- Website hosting — index/error documents, redirect rules
Protocol
REST. Path-based routing (/bucket/key), HTTP method + query string for actions, XML responses.
Introspection
GET /_fakecloud/s3/notifications— list all S3 notification events recorded during the testPOST /_fakecloud/s3/lifecycle-processor/tick— run one lifecycle processing tick
Cross-service delivery
- S3 -> SNS / SQS / Lambda / EventBridge — Bucket notifications on object create/delete
Gotchas
- In persistent mode, object bodies stream to disk with a bounded LRU cache (
--s3-cache-size, default 256 MiB). Objects larger thancache-size / 2bypass the cache. - The
/_fakecloud/s3/notificationsintrospection buffer is intentionally not persisted across restarts. - SigV4 signatures are parsed for request routing but never validated.
Source
crates/fakecloud-s3— implementationaws-models/s3.json— Smithy model- AWS S3 API reference