The API doc for Spaces says that Bucket Versioning is supported, but only via the API. But I cannot see in the API doc how to create or use a bucket with versioning enabled. Any help appreciated!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
2 answers

Hello friend!

Versioning is currently something that you can enable through the S3 compatible Spaces API. Currently this is the best documentation I can locate on the matter:

https://docs.aws.amazon.com/AmazonS3/latest/dev/manage-versioning-examples.html

We typically suggest using s3cmd to interact with the API. However, s3cmd does not seem to currently support this. It never hurts to give an upvote to the request though:

https://github.com/s3tools/s3cmd/issues/937

Kind Regards,
Jarland

After unsuccessfully trying to access the API for a while I managed to set this setting using the official AWS CLI

  1. Get it at https://aws.amazon.com/cli/
  2. Type aws configure in your terminal and supply your DO credentials (you can leave the region empty)
  3. Run aws s3api list-object-versions --bucket {{ BUCKET_NAME }} --endpoint=https://{{ REGION }}.digitaloceanspaces.com
  • aws s3api list-object-versions merely lists the versions of each object in your space including some additional metadata like ETag.

    aws s3api put-bucket-versioning is used to enable versioning in the AWS CLI v2.

    Something this like works on a normal AWS S3 instance…

    aws s3api put-bucket-versioning --versioning-configuration Status=Enabled --bucket {{ BUCKET_NAME }}

    …but it doesn’t work on a DO Space. As of Apr 4, 2021 (aws-cli/2.1.36) the command fails with…

    An error occurred (InvalidAccessKeyId) when calling the PutBucketVersioning operation: The AWS Access Key Id you provided does not exist in our records.

    Even while using a valid DO Access Key ID (other aws cli commands work just fine).

    There is possible a work-around for this but I can’t see it.

    Anyway, hope this helps someone. Ho hum.