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 test
  • POST /_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 than cache-size / 2 bypass the cache.
  • The /_fakecloud/s3/notifications introspection buffer is intentionally not persisted across restarts.
  • SigV4 signatures are parsed for request routing but never validated.

Source