Skip to content

Manage bucket versioning in Object Storage

Last updated on

Bucket versioning preserves multiple versions of an object in the same bucket. When versioning is enabled, each upload creates a version rather than overwriting the existing object. This protects against accidental deletion and data corruption.

  • Object Storage enabled and credentials configured: Enable Object Storage
  • AWS CLI or s5cmd installed and configured for STACKIT Object Storage
Terminal window
put-bucket-versioning \ --bucket $BUCKET_NAME \ --versioning-configuration Status=Enabled ```
</TabItem>
<TabItem label="s5cmd">```bash s5cmd bucket-version --set Enabled s3://$BUCKET_NAME ```</TabItem>
</Tabs>
## Get versioning status
<Tabs syncKey="cli-tool">
<TabItem label="AWS CLI">
```bash
aws --endpoint-url https://object.storage.eu01.onstackit.cloud s3api get-bucket-versioning \
--bucket $BUCKET_NAME

Example output when versioning is enabled:

{
"Status": "Enabled"
}

Once versioning has been enabled on a bucket, it cannot be disabled. It can only be suspended. Suspended versioning stops creating versions but keeps existing ones.

Terminal window
put-bucket-versioning \ --bucket $BUCKET_NAME \ --versioning-configuration Status=Suspended ```
</TabItem>
<TabItem label="s5cmd">
```bash s5cmd bucket-version --set Suspended s3://$BUCKET_NAME ```
</TabItem>
</Tabs>
## List object versions
<Tabs syncKey="cli-tool">
<TabItem label="AWS CLI">
List all versions of all objects in a bucket:
```bash
aws --endpoint-url https://object.storage.eu01.onstackit.cloud s3api list-object-versions \
--bucket $BUCKET_NAME

Each version has a unique VersionId. Example output:

{
"Versions": [
{
"ETag": "1a6fcf50c1eafb9db3b1916c80131a8c",
"Size": 56,
"StorageClass": "STANDARD",
"Key": "testfile.txt",
"VersionId": "NDM0ODQ5NEEtQTU0OC0xMUVDLTkyNEItOTFFRTAwQkU0RTEw",
"IsLatest": true,
"LastModified": "2022-03-16T16:43:52.668000+00:00",
"Owner": {
"DisplayName": "f1ba3206-eaf2-4f1d-b01a-5679c5e82dfd",
"ID": "88612969136594181457"
}
}
]
}

Download a specific version of an object by providing its VersionId:

Terminal window
aws --endpoint-url https://object.storage.eu01.onstackit.cloud s3api get-object \
--bucket $BUCKET_NAME \
--key $OBJECT_KEY \
--version-id $VERSION_ID \
output-filename

bash s5cmd rm --version-id $VERSION_ID s3://$BUCKET_NAME/$OBJECT_KEY

bash s5cmd rm --all-versions s3://$BUCKET_NAME/$OBJECT_KEY

For full details on available commands, see the AWS CLI documentation or the s5cmd documentation.