【发布时间】:2021-01-07 09:54:20
【问题描述】:
我正在尝试对 GCP 存储桶进行对象生命周期管理。我想删除存储桶中具有 2 个较新版本对象的所有文件。为此,我创建了以下规则
{
"lifecycle": {
"rule": [
{
"action": {"type": "Delete"},
"condition": {
"numNewerVersions": 2
}
}
]
}
}
已在存储桶上启用版本控制,如下所示
$ gsutil versioning get gs://<my bucket>/
gs://<my bucket>/: Enabled
inputFIle.txt在bucket里面有如下三个修改。
gsutil ls -a gs://bucketdataflowtest/
gs://<my bucket>//inputFile.txt#1597038772164786
gs://<my bucket>//inputFile.txt#1600169465982831
gs://<my bucket>//inputFile.txt#1600680502763401
gs://<my bucket>//jsonSchema.json#1597038769578689
gs://<my bucket>//transformCSVtoJSON.js#1597038773640155
应用规则后,我验证规则已应用
$ gsutil lifecycle get gs://<my bucket>/
{"rule": [{"action": {"type": "Delete"}, "condition": {"numNewerVersions": 2}}]}
但我没有看到旧版本被删除。如下图所示,inputFIle.txt 的 4 个修订版仍然存在,包括 live 版本。
$ gsutil ls -la gs://<my bucket>/
209 2020-08-10T05:52:52Z gs://<my bucket>/inputFile.txt#1597038772164786 metageneration=1
347 2020-09-15T11:31:05Z gs://<my bucket>/inputFile.txt#1600169465982831 metageneration=1
347 2020-09-21T09:28:22Z gs://<my bucket>/inputFile.txt#1600680502763401 metageneration=1
347 2020-09-21T09:48:00Z gs://<my bucket>/inputFile.txt#1600681680007546 metageneration=1
571 2020-08-10T05:52:49Z gs://<my bucket>/jsonSchema.json#1597038769578689 metageneration=1
495 2020-08-10T05:52:53Z gs://<my bucket>/transformCSVtoJSON.js#1597038773640155 metageneration=1
我的生命周期规则有任何问题。该存储桶具有 STANDARD 存储类。
更新:
@guillaume blaquiere 已澄清,我将等待 24 小时检查该政策是否已生效。
我需要对以下情况进行进一步说明。
我已经编写了生命周期规则来删除所有超过 60 天的 Live 对象,并且在 70 天后删除非当前版本。因此,当应用该规则时,所有超过 60 天的实时版本对象都将被删除。但是由于在存储桶上启用了对象版本控制,它将为被删除的对象创建非当前版本。现在由于同一规则中的第二个条件,这些非当前版本将被删除。是 70 天后删除还是再过 10 天后删除。希望我清楚。上述场景的规则如下图所示
{
"lifecycle": {
"rule": [
{
"action": {"type": "Delete"},
"condition": {
"age": 60,
"isLive": true
}
},
{
"action": {"type": "Delete"},
"condition": {
"age": 70 ,
"isLive": false
}
}
]
}
}
请澄清
【问题讨论】:
标签: google-cloud-platform google-cloud-storage versioning lifecycle