Summary
An object storage bucket can either have versioning or retention rules, but not both. Life cycle rules are ARCHIVE, INFREQUENT_ACCESS, DELETE, and ABORT (for uncommitted multipart uploads).
Reference
Enable Versioning
Use the following command to enable object versioning:
oci os bucket update \ --name FRA-AA-LAB11-1-BKT-01 \ --versioning Enabled
The sample output is:
{ "data": { "approximate-count": null, "approximate-size": null, "auto-tiering": "Disabled", "compartment-id": "ocid1.compartment.oc1..aaaaaaaamoo6uz2qmix2adls2cgoqxxhdt4wuam3wbcrw6co6z4osweos6da", "created-by": "ocid1.user.oc1..aaaaaaaab6dmoec6utwsmvueyko32h6vvhmptr3yeaunitxj6733jpo6hsca", "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/tenancy_admin", "CreatedOn": "2024-08-03T17:36:07.615Z" } }, "etag": "e6a6c4fb-2fe3-4f20-884e-8eed73562785", "freeform-tags": {}, "id": "ocid1.bucket.oc1.ap-sydney-1.aaaaaaaaz4b7hgfkmiqk6ovgpbhvmr746j4xdw3nw2wyexn4rsyorc4m5pdq", "is-read-only": false, "kms-key-id": null, "metadata": {}, "name": "FRA-AA-LAB11-1-BKT-01", "namespace": "sdorfvwhnhvj", "object-events-enabled": false, "object-lifecycle-policy-etag": null, "public-access-type": "NoPublicAccess", "replication-enabled": false, "storage-tier": "Standard", "time-created": "2024-08-03T17:36:07.627000+00:00", "versioning": "Enabled" }, "etag": "e6a6c4fb-2fe3-4f20-884e-8eed73562785" }
Create Lifecycle Policy
Use the following commands to update security policy to allow Object Service to manage objects:
printf -v policy '["%s"]' \ "Allow service objectstorage-ap-sydney-1 to manage object-family in tenancy" oci iam policy create \ --compartment-id ${OCI_CLI_TENANCY} \ --description 'Allow Object Storage Service to manage objects in my tenancy' \ --name 'object-storage-service' \ --statements "${policy}"
The output is:
{ "data": { "compartment-id": "ocid1.tenancy.oc1..aaaaaaaa7ilqdzmkbqduujc3tt6zrl2n2ytcughcjoidozg4memj2k4cm7na", "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/tenancy_admin", "CreatedOn": "2024-08-06T01:13:18.856Z" } }, "description": "Allow Object Storage Service to manage objects in my tenancy", "freeform-tags": {}, "id": "ocid1.policy.oc1..aaaaaaaay25zezvxv6pfe3ioifi5laokyertwtt7ctdp3wbihbjo5ct4cvla", "inactive-status": null, "lifecycle-state": "ACTIVE", "name": "object-storage-service", "statements": [ "Allow service objectstorage-ap-sydney-1 to manage object-family in tenancy" ], "time-created": "2024-08-06T01:13:18.907000+00:00", "version-date": null }, "etag": "a52b622b9f6bf2a4c7db1b006fd9d1c436f19651" }
Use the following commands to create a lifecycle policy:
policy='[{"name":"ArchiveRule","action":"ARCHIVE","objectNameFilter":{"inclusionPrefixes":["/"]},"target":"objects","timeAmount":30,"timeUnit":"DAYS"}]' oci os object-lifecycle-policy put \ --bucket-name FRA-AA-LAB11-1-BKT-01 \ --items "${policy}" \ --force
The output is:
{ "data": { "items": [ { "action": "ARCHIVE", "is-enabled": false, "name": "ArchiveRule", "object-name-filter": { "exclusion-patterns": null, "inclusion-patterns": null, "inclusion-prefixes": [ "/" ] }, "target": "objects", "time-amount": 30, "time-unit": "DAYS" } ], "time-created": "2024-08-06T01:17:57.264000+00:00" }, "etag": "5c1791af-28c4-4553-9945-e6e7790b37d7" }
Create Retention Rule
A new bucket is required as a retention rule cannot applied to an object that has versioning enabled.
Use the following commands to create a retention rule:
bucket_name='FRA-AA-LAB11-1-BKT-02' name_space=$( \ oci os ns get \ --query 'data' \ --raw-output \ ) comp_id=$( \ oci iam compartment list \ --name 'Sandbox' \ --query 'data[0].id' \ --raw-output \ ) oci os bucket create \ --namespace ${name_space} \ --name ${bucket_name} \ --compartment-id ${comp_id} \ --query 'data.id' \ --raw-output oci os retention-rule create \ --bucket-name ${bucket_name} \ --display-name 'Retention Rule' \ --time-amount 90 \ --time-unit DAYS
The sample output is:
ocid1.bucket.oc1.ap-sydney-1.aaaaaaaa5q3ahqwv4ovmogvwqhpf5yjvgo3f535cry4e36gqx6xjsvn43gya { "data": { "display-name": "Retention Rule", "duration": { "time-amount": 90, "time-unit": "DAYS" }, "etag": "45144334-c254-4676-9e5c-92f718913dbd", "id": "a268daf3-f29b-4f4e-9000-b223adb1bb3c", "time-created": "2024-08-05T19:34:19.140000+00:00", "time-modified": "2024-08-05T19:34:19.140000+00:00", "time-rule-locked": null }, "etag": "45144334-c254-4676-9e5c-92f718913dbd" }