【问题标题】:Understanding IsLive and Storage Class while writing Object Lifecycle rules in GCP在 GCP 中编写对象生命周期规则时了解 IsLive 和存储类
【发布时间】:2020-09-23 11:07:40
【问题描述】:

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

  1. 如果一个非当前对象版本在 100 天内未被访问,并且其当前存储类是 STORAGE, MULTI_REGIONAL and DURABLE_REDUCED_AVAILABILITY 之一,则将该对象移动到 Nearline 存储

  2. 如果一个对象版本在 100 天内没有被访问并且它当前的存储类是 Nearline ,将它移动到 Coldline 存储类

  3. 如果对象在 100 天内未从 Coldline 存储中访问,则从 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 移至 COLDLINE 100 天内无法访问,我需要在规则 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-platform google-cloud-storage versioning


    【解决方案1】:

    你的规则不正确。

    首先,agenumber of days after the creation

    年龄是根据对象的创建时间来衡量的

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

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

    • 转到近线
    • 转到冷线
    • 从冷线中删除

    在相同的年龄条件下!!


    回答您的问题

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

    【讨论】:

    • 谢谢。所以规则是基于 'Age' 而不是 'access' 。很少查询..一旦将非当前文件从 STANDARD 移动到 NEARLINE 或 COLDLINE ,看起来创建日期没有被修改,因此前三个规则中的 "Age" 必须分别为 "100" 、 "200" 和 "300" .如果我错了,请纠正我?
    • 没错。更改存储类时,会更新 blob 元数据,但不会更新 blob 本身,因此创建日期不会更改。
    • 谢谢。如果有机会,在规则 2 和 3 中添加 isLive: false 是否安全!版本将与从 STORAGE 类移动的 NEARLINE 和 COLDLINE 存储中的非当前版本一起存在。 ?
    • 是的,它会更安全!
    猜你喜欢
    • 2021-03-09
    • 2016-06-23
    • 1970-01-01
    • 2020-11-29
    • 2021-12-10
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多