Enable bucket retention policy and locking abilities
This MR implements the ability to configure retention policies and bucket locks for buckets created/managed by this tool.
Things to note:
The existing arg retention_period was misleading in that it actually referred to the lifecycle delete policy age. So, to ensure that it is clear going forward, I've added the lifecycle-delete-rule-age arg instead, and the retention-period arg now refers to the retention period itself.
It is also worth mentioning that object versioning cannot be used in conjunction with retention policies so I've implemented the required logic to disable versioning when necessary.
The tool's defaults are now to create a bucket with the following:
-
COLDLINEstorage. - Retention period set to 91 days (1 day longer than the
COLDLINEminimum storage duration). - A lifecycle policy to delete objects after 180 days (this was the existing default and I see no reason to change it).
The new --enable-bucket-lock arg can be used to permanently lock the bucket's retention policy. This arg will be added to our scheduled task to ensure our SQL backup buckets are locked.
Finally, the --bucket-patch-retention-policy arg exists to patch existing buckets as a one off task which I'll do once this MR is approved/merged.
Closes #10 (closed)