S3 versioning
In the S3 service, you can keep track of how files change over time using the versioning feature. While this feature does add additional cost, it is especially useful as a way to help restore deleted objects.
Once you enable versioning, each object in that S3 bucket gets a value for the version ID. If you haven't enabled versioning on the bucket, then the version id for the objects in the bucket is set to null:
Once you upload a subsequent version of the object with versioning turned on, Amazon produces a new version id for the new version of the object and then places that newer version of the object in the bucket.