【问题标题】:GCP Storage versioning: Deleting files with more than two revisionsGCP 存储版本控制:删除具有两个以上修订版的文件
【发布时间】: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


    【解决方案1】:

    生命周期是一个异步过程,您的配置最长可能需要 24 小时才能考虑在内。您不知道它何时扫描您的存储桶。这里是the documentation中的详细信息

    Cloud Storage 会定期检查存储桶中配置了对象生命周期管理的所有对象,并根据存储桶的规则执行所有适用的操作。 Cloud Storage 异步执行操作,因此在满足条件和执行操作之间可能会有延迟。

    对您的生命周期配置的更新最长可能需要 24 小时才能生效。这意味着当您更改生命周期配置时,对象生命周期管理可能仍会根据旧配置执行长达 24 小时的操作。

    【讨论】:

    • 非常感谢。如果你能澄清,我需要一些额外的澄清
    猜你喜欢
    • 2023-02-09
    • 2019-07-20
    • 2023-01-30
    • 2011-04-22
    • 2011-02-13
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多