首页 > 解决方案 > 在 GCP 中编写对象生命周期规则时了解 IsLive 和存储类

问题描述

我们需要在下面Object Lifecycle rules启用GCP Cloud Storage bucket

  1. 如果100 天内未访问非当前对象版本并且其当前存储类是 中的任何一个STORAGE, MULTI_REGIONAL and DURABLE_REDUCED_AVAILABILITY ,则将该对象移至NearlineStorage

  2. 如果对象版本 100 天未访问且其当前存储类为Nearline,则将其移至Coldline存储类

  3. Coldline如果对象在 100 天内未从存储中访问,则从存储中删除Coldline

  4. 保留 2 个非当前版本的文件

为实现上述规则,以下规则应用于存储桶

{
 "lifecycle": {
   "rule": [
   {
    "action": {
    "type": "SetStorageClass",
    "storageClass": "NEARLINE"
 },
 "condition": {
    "age": 100,
    "isLive": false,
    "matchesStorageClass": ["REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
   },
  {
    "action": {
    "type": "SetStorageClass",
    "storageClass": "COLDLINE"
    },
     "condition": {
       "age": 100,
       "matchesStorageClass": ["NEARLINE"]
      }
  },
 {
   "action": { "type": "Delete"},
    "condition": {
     "age": 100,
     "matchesStorageClass": ["COLDLINE"]
    }
   },
  {
    "action": { "type": "Delete"},
     "condition": {
     "numNewerVersions": 2
     }
    }
   ]
   }
   }

下面需要说明

  1. 它显示规则已成功应用,但它会实际工作。由于我们将非当前版本从NEARLINE移动到100 天内未访问的COLDLINE,我需要在规则 2 中添加 "isLive": false 。对于规则 3,我们也需要它吗?

    {
     "action": {
     "type": "SetStorageClass",
     "storageClass": "COLDLINE"
     },
      "condition": {
        "age": 100,
        "isLive": false
        "matchesStorageClass": ["NEARLINE"]
       }
    

    },

    {
      "action": { "type": "Delete"},
      "condition": {
      "age": 100,
      "isLive": false
      "matchesStorageClass": ["COLDLINE"]
     }
    },
    
  2. 由于我们正在考虑超过 100 天的访问权限,因此从STANDARD存储类直接迁移到COLDLINE是否有意义

有什么建议么 ?

标签: google-cloud-platformgoogle-cloud-storageversioning

解决方案


你的规则不正确。

首先age创建后的天数

年龄是从对象的创建时间测量的

因此,您的条件“如果在过去 100 天内未访问过”是不可能的。正确的表达方式是“在它创建 100 天后,做……”

从那里,您的归档策略不正确。您使用相同的年龄(对象创建后 100 天)来

  • 前往近线
  • 去冷线
  • 从冷线中删除

在相同的年龄条件下!!


回答您的问题

  1. isLive: false不,如果您认为(并且您确定)只有非当前版本在nearline课堂上,您无需提及
  2. 是的,您可以从标准跳到 Coldline,特别是对于非当前版本,如果您认为它们从未(或很少)使用,然后在 100 天后将其删除。

推荐阅读