我想为新的 GCS 存储桶设置策略,以便文件在 14 天后过期(TTL、生存时间或生命周期结束)。
我用
gsutil mb \
-p ${GCP_PROJECT_ID} \
gs://$GCS_BUCKET_NAME \
--retention 14d
这不起作用。这是为什么?
在更仔细地阅读GCS存储桶TTL和保留策略后,我发现我误解了
--retention
标志的意图。
保留策略
--retention
是控制存储桶中的对象必须保留多长时间,而不是何时过期或删除。
https://cloud.google.com/storage/docs/bucket-lock
例如,
--retention 14d
表示该对象在14天内不允许删除。这并不意味着对象有 14 天的生命周期,并且会在 14 天后过期并被删除。
如果我们想为 GCS 存储桶正确设置文件异议过期或 TTL,请执行以下操作
# set GCS bucket object TTL
echo '
{
"rule":
[
{
"action": {"type": "Delete"},
"condition": {"age": 14}
}
]
}
' > gcs_lifecycle.tmp
gsutil lifecycle set gcs_lifecycle.tmp gs://$GCS_BUCKET_NAME
rm gcs_lifecycle.tmp