Any way to enable Amazon S3 Versioning for existing objects?

Sorry man but you're stuck.

The versioning must be enabled to get access to previous versions.

With versioning disabled or with versioning suspended, you can not retrieve changelogs of any sort. The file is simply overwritten.

If a null version already exists in a bucket, the null version is overwritten, as shown in the following figure.

version diagram
(source: amazon.com)

  • Adding Objects to Version Suspended Buckets

Having no versioning ever enabled follows the same policy. But looks more like this:

no versioning
(source: amazon.com)

Where the object with version ID null simply continues to be overwritten. If AWS had versioning set up by default they would probably run out of space.

Update: the items already in the bucket will immediately start versioning when you enable it.

  • @michael-sqlbot

When you turn on versioning on the bucket, existing objects are not given a version ID. Instead, they will have a version ID of null. Any previous versions are not "automatically restored".

Other than that, existing objects will be versioned as normal in the future.

New objects added to or changed in the bucket will be given a unique version ID.

After versioning is enabled, if you list all versions of an object, you'll notice that the last (oldest) version will have a version ID of null, if that original version existed before versioning was enabled.