在 GCP 中编写对象生命周期规则时了解 IsLive 和存储 Class
Understanding IsLive and Storage Class while writing Object Lifecycle rules in GCP
我们需要在 GCP Cloud Storage bucket
中启用以下 Object Lifecycle rules
如果非当前对象版本 100 天未访问且其当前存储class 是 STORAGE, MULTI_REGIONAL and DURABLE_REDUCED_AVAILABILITY
之一,将该对象移动到 Nearline
存储
如果对象版本 100 天未访问且其当前存储 class 为 Nearline
,则将其移至 Coldline
存储 Class
如果 100 天未从 Coldline
存储中访问对象,则从 Coldline
存储中删除。
保留 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
}
}
]
}
}
下面需要说明
这表明规则已成功应用,但它是否实际起作用。由于我们正在将非当前版本从 NEARLINE 移动到 COLDLINE 100 天未访问,我是否需要在规则中添加 "isLive": false 2.我们也需要规则 3 吗?
{
"action": {
"type": "SetStorageClass",
"storageClass": "COLDLINE"
},
"condition": {
"age": 100,
"isLive": false
"matchesStorageClass": ["NEARLINE"]
}
},
{
"action": { "type": "Delete"},
"condition": {
"age": 100,
"isLive": false
"matchesStorageClass": ["COLDLINE"]
}
},
从 STANDARD 存储 class 直接移动到 COLDLINE 是否有意义,因为我们正在考虑超过 100 天的访问权限
有什么建议吗?
你的规则不正确。
首先,age
是number of days after the creation
Age is measured from the object's creation time
因此,您的条件“如果最近 100 天未访问过”是不可能的。正确的表达方式是“创建后 100 天,做...”
由此可见,您的归档策略不正确。您使用相同的年龄(对象创建后 100 天)到
- 转到近线
- 转到 Coldline
- 从冷行中删除
年龄相同!!
回答您的问题
- 不,如果您认为(并且您确定)只有 non-current 版本在
nearline
class[ 中,则无需提及 isLive: false
=35=]
- 是的,您可以从标准版跳转到 Coldline,尤其是 non-current 版本,如果您认为它们从未(或很少)使用过,然后在 100 天后删除它们。
我们需要在 GCP Cloud Storage bucket
Object Lifecycle rules
如果非当前对象版本 100 天未访问且其当前存储class 是
STORAGE, MULTI_REGIONAL and DURABLE_REDUCED_AVAILABILITY
之一,将该对象移动到Nearline
存储如果对象版本 100 天未访问且其当前存储 class 为
Nearline
,则将其移至Coldline
存储 Class如果 100 天未从
Coldline
存储中访问对象,则从Coldline
存储中删除。保留 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
}
}
]
}
}
下面需要说明
这表明规则已成功应用,但它是否实际起作用。由于我们正在将非当前版本从 NEARLINE 移动到 COLDLINE 100 天未访问,我是否需要在规则中添加 "isLive": false 2.我们也需要规则 3 吗?
{ "action": { "type": "SetStorageClass", "storageClass": "COLDLINE" }, "condition": { "age": 100, "isLive": false "matchesStorageClass": ["NEARLINE"] }
},
{ "action": { "type": "Delete"}, "condition": { "age": 100, "isLive": false "matchesStorageClass": ["COLDLINE"] } },
从 STANDARD 存储 class 直接移动到 COLDLINE 是否有意义,因为我们正在考虑超过 100 天的访问权限
有什么建议吗?
你的规则不正确。
首先,age
是number of days after the creation
Age is measured from the object's creation time
因此,您的条件“如果最近 100 天未访问过”是不可能的。正确的表达方式是“创建后 100 天,做...”
由此可见,您的归档策略不正确。您使用相同的年龄(对象创建后 100 天)到
- 转到近线
- 转到 Coldline
- 从冷行中删除
年龄相同!!
回答您的问题
- 不,如果您认为(并且您确定)只有 non-current 版本在
nearline
class[ 中,则无需提及isLive: false
=35=] - 是的,您可以从标准版跳转到 Coldline,尤其是 non-current 版本,如果您认为它们从未(或很少)使用过,然后在 100 天后删除它们。