Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-014: S3 API Compatibility Scope

Status: Accepted Date: 2026-04-17 Context: A-ADV-5 (S3 API compatibility scope)

Decision

Implement a subset of S3 API covering the operations needed by HPC/AI workloads. Not a complete S3 implementation.

Supported (full)

APINotes
PutObjectSingle-part upload
GetObjectIncluding byte-range reads
HeadObjectMetadata retrieval
DeleteObjectTombstone or delete marker (versioning)
ListObjectsV2Prefix, delimiter, pagination
CreateMultipartUpload
UploadPart
CompleteMultipartUpload
AbortMultipartUpload
ListMultipartUploads
ListParts
CreateBucketMaps to namespace creation
DeleteBucketMaps to namespace deletion
HeadBucketExistence check
ListBucketsPer-tenant bucket listing

Supported (versioning)

APINotes
GetObjectVersionSpecific version retrieval
ListObjectVersionsVersion listing
DeleteObjectVersionDelete specific version

Supported (conditional)

APINotes
If-None-Match, If-MatchConditional writes
If-Modified-SinceConditional reads

Not supported (initial build)

APIReasonFuture?
Lifecycle policiesComplex; competes with Kiseki’s own tieringMaybe
Event notificationsRequires message bus integrationMaybe
SSE-S3, SSE-KMS, SSE-CKiseki’s encryption is always-on; S3 SSE headers are acknowledged but don’t change behaviorN/A
Presigned URLsUseful; add after core is stableYes
Bucket policiesKiseki uses its own IAM/policy modelNo
CORSNot relevant for HPC/AI workloadsNo
Object LockCovered by Kiseki’s retention holdsMapping possible
Select (S3 Select)Out of scopeNo

SSE header handling

S3 clients may send SSE headers. Kiseki always encrypts (I-K1).

  • SSE-S3 headers: acknowledged, no-op (system encryption is always on)
  • SSE-KMS headers with key ARN: if ARN matches tenant KMS config, acknowledged. If different: error (tenant can’t specify arbitrary keys)
  • SSE-C headers: rejected (Kiseki manages encryption, not the client)

Consequences

  • S3-compatible tooling (aws cli, boto3, rclone) works for supported operations
  • Unsupported operations return 501 Not Implemented
  • SSE headers are handled gracefully without breaking encryption model