Documentation

Lifecycle rules

S3 lifecycle rules expire objects after a set time, transition them to colder storage classes, or abort multipart uploads that linger.

#Edit

Open the bucket, then Settings → Lifecycle. Each rule has:

  • ID — string identifier for the rule.
  • Prefix — only objects with keys starting with this prefix are affected.
  • Enabled — toggle without deleting.
  • Expiration days — delete the current version after N days.
  • Noncurrent expiration days — delete non-current versions after N days. Useful with versioning.
  • Abort incomplete multipart days — clean up dangling multipart uploads.
  • Transition days / storage class — move to colder storage.

Save runs SetBucketLifecycle. Audit action: bucket.lifecycle.set.

#What gets cleaned up by abort-incomplete

Stowage's multipart upload queue retries, but if a client crashes mid-upload, the upstream retains the partial parts indefinitely until either:

  • The dashboard's "Multipart uploads" view aborts them by hand.
  • A lifecycle rule with abort incomplete multipart days does it automatically.

A 7-day rule is a sensible default for any bucket with regular multipart traffic.

#Storage class transitions

What's accepted as a storage-class string depends on the backend:

BackendAccepted classes
AWS S3STANDARD_IA, INTELLIGENT_TIERING, ONEZONE_IA, GLACIER, DEEP_ARCHIVE, GLACIER_IR
MinIOCustom labels per mc admin tier add
Garage / SeaweedFSLifecycle support is partial; check upstream docs

Stowage doesn't pre-validate — invalid combinations surface as the upstream's own error.

#Backend support

Capabilities.Lifecycle=true gates the UI.