Using Java, is it possible to set the time to live (TTL) on a blob that is being created in Google Cloud Storage?
I do not want to set TTL on the Bucket - only on the items within the Bucket.
For example, 14 days after its creation date, I would like any files that are stored in a specific bucket to be deleted.
Here is an example of how I am creating my blob:
WriteChannel writer = storage.writer(BlobInfo.newBuilder(blobId).setContentType("application/json").build());
I was looking for a way to set the TTL upon creation but have not been able to find a solution. Please advise
It is not currently possible to set a per-object TTL, you can only configure a bucket-wide TTL that applies to all objects in the bucket by setting the buckets LifeCycle configuration. https://cloud.google.com/storage/docs/lifecycle
Setting a TTL of 14 days on the bucket via LifeCycle will not cause the bucket itself to be deleted after 14 days, instead it will cause each object uploaded to that bucket to be deleted 14 days after it was created.
You can do that by using the DaysSinceCustomTime rule in the bucket lifecycle configuration: https://cloud.google.com/storage/docs/lifecycle#dayssincecustomtime
blob.custom_time = pd.Timestamp('now', tz='UTC') + pd.offsets.Second(ttl)
#blob.patch()
blob.update() # they seem to have a bug with the custom_time setter, so using .update() instead of .patch()
If you do that and the DaysSinceCustomTime will be set for 1 day for example, the object would be deleted after ttl + 1 day.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With