TessariDBDocs
  • 0.34.2-betalatest
  • 0.34.1-beta
  • 0.34.0-beta
  • 0.33.4-beta
  • 0.33.3-beta
  • 0.33.2-beta
  • 0.33.1-beta
  • 0.33.0-beta
  • 0.32.0-beta

The S3 surface

Which S3 operations are implemented and how, and the rule for every other one: refused with NotImplemented, never routed somewhere it happens to fit.

Requests are dispatched by operation name. An operation the server does not implement is answered NotImplemented; an unknown or misplaced parameter is refused before any operation runs. Each of the 116 operations of the AWS S3 model is signed, sent and answered in the server's tests.

Buckets

operationnotes
CreateBucket · HeadBucket · DeleteBucket · ListBucketsa bucket holding only versions is not empty
GetBucketLocationthe server's region
GetBucketVersioning · PutBucketVersioningnever versioned → Enabled ↔ Suspended, never back; MFA delete refused
GetBucketLifecycleConfiguration · PutBucketLifecycleConfiguration · DeleteBucketLifecyclesee Events, lifecycle and media
GetBucketNotificationConfiguration · PutBucketNotificationConfigurationqueue configurations only

Objects

operationnotes
PutObjectup to 5 GiB; payload hash and declared checksums verified before the write is acknowledged
GetObject · HeadObjectranges, partNumber, versionId, x-amz-version-id answered
CopyObjectup to 5 GiB, COPY or REPLACE metadata, copy-source conditions, checksum recomputed and checked
DeleteObject · DeleteObjectswith versionId, removes that version for good
ListObjectsV2 · ListObjectsbyte order, delimiter roll-up, authenticated continuation tokens, encoding-type=url
ListObjectVersionskeys in byte order, each key newest first with IsLatest, key and version-id markers
GetObjectTaggingalways the empty set: nothing writes tags

Multipart

operationnotes
CreateMultipartUpload · UploadPart · UploadPartCopyUploadPartCopy from a range or all of a source
ListParts · ListMultipartUploadskey and upload-id markers, delimiter roll-up
CompleteMultipartUploadmultipart ETag, full-object or composite checksum; reads across parts with Range and partNumber
AbortMultipartUploadan upload open longer than TESSARIDB_S3_UPLOAD_MAX_AGE_SECS (a week) is aborted by the reaper

Versioning in practice

An enabled bucket keeps every version and a delete adds a marker; a suspended one replaces only the null version. GetObject with a versionId naming no version answers NoSuchVersion; a delete marker named by id answers 405, and a current one 404 with x-amz-delete-marker. Removing a delete marker by id brings the object back. Objects from an earlier build become null versions at start.

What is not here yet

Object Lock, bucket policies set through the S3 API, tagging writes, website configuration and lifecycle transitions are among the operations answered NotImplemented today. A client that needs one of them gets that refusal, not a quiet success.