I am trying to build a backup system for some important data in my AWS S3 bucket. Among the options that I explored were versioning from which individual objects can be recovered to an earlier state. This would definitely help in the case of accidental deletions.
But the problem here is in situations where there's a data corruption happening because of some wrong code that was introduced or something similar, in order to retrieve the system to an earlier state a proper snapshot based backup solution will be required in addition to versioning. This would also help in a situation where say the whole bucket was deleted accidentally, or versioning got turned off and some data got deleted later.
The current option I was thinking of was to use an EC2 instance to copy the data daily or at predefined intervals to local drive(using aws s3 sync or aws s3 cp) and then upload it under the particular days folder to another S3 bucket. I was thinking of maintaining a life-cycle rule to expire the backups after say a week. I don't think this is very efficient though because the buckets could hold about 100GB data later as traffic increases into the application.
I wanted some validation from someone who might have done something similar if this is the right way to proceed, or if there's some S3 or AWS feature that can be used to make this simpler.