Skip to main content

Versioning

The Versioning card on the bucket’s Settings tab shows the current state and offers Enable and Suspend.
A bucket sits in one of three states:
never configured
The bucket has no versioning history. On the S3 wire this is reported by omitting the status element entirely, which is how S3 itself reports it.
every write creates a version
Deletes write a delete marker instead of removing bytes. GET /v1/buckets/{bucket}/object-versions lists versions and delete markers together.
was on, now off
Existing versions are kept; new writes stop creating them. This is distinct from disabled, and the distinction matters: suspending does not delete history.
The storage API uses the platform’s lowercase vocabulary; the S3 endpoint spells the same states Enabled and Suspended in its XML. Either spelling is accepted on input.
Versions you no longer need are not free — they count against your stored bytes. Pair versioning with a noncurrent_version_expiration lifecycle rule, or a suspended bucket quietly keeps every version it ever made.

Object Lock and retention

On a bucket created with object_lock_enabled, individual objects can carry a retention mode and a retain-until date, set at upload with X-Amz-Object-Lock-Mode and X-Amz-Object-Lock-Retain-Until-Date, or afterwards through the ?retention sub-resource.

GOVERNANCE

Retention can be shortened or a locked object deleted, but only by a caller who sends X-Amz-Bypass-Governance-Retention: true and holds storage:BypassGovernanceRetention on the object.

COMPLIANCE

Nothing bypasses it. A ?retention write that would move the date earlier is refused, so retention can only ever be extended.
A legal hold (?legal-hold) is independent of the retention date: while it is on, the object cannot be deleted regardless of when retention expires. A delete blocked by either shows up as 403, not a silent no-op. In the console both live on the object itself: its Properties tab has a Retention card (Mode, Retain until) and a Legal hold switch, and Save changes applies them together. Shortening a GOVERNANCE date offers the bypass as a switch rather than making you send the header. The upload page has no object-lock fields, though, so setting retention at upload is API only.