google-cloud-platform - 在 GCP 中编写对象生命周期规则时了解 IsLive 和存储类
问题描述
我们需要在下面Object Lifecycle rules
启用GCP Cloud Storage bucket
如果100 天内未访问非当前对象版本并且其当前存储类是 中的任何一个
STORAGE, MULTI_REGIONAL and DURABLE_REDUCED_AVAILABILITY
,则将该对象移至Nearline
Storage如果对象版本 100 天未访问且其当前存储类为
Nearline
,则将其移至Coldline
存储类Coldline
如果对象在 100 天内未从存储中访问,则从存储中删除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移动到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"] } },
由于我们正在考虑超过 100 天的访问权限,因此从STANDARD存储类直接迁移到COLDLINE是否有意义
有什么建议么 ?
解决方案
你的规则不正确。
首先age
是创建后的天数
年龄是从对象的创建时间测量的
因此,您的条件“如果在过去 100 天内未访问过”是不可能的。正确的表达方式是“在它创建 100 天后,做……”
从那里,您的归档策略不正确。您使用相同的年龄(对象创建后 100 天)来
- 前往近线
- 去冷线
- 从冷线中删除
在相同的年龄条件下!!
回答您的问题
isLive: false
不,如果您认为(并且您确定)只有非当前版本在nearline
课堂上,您无需提及- 是的,您可以从标准跳到 Coldline,特别是对于非当前版本,如果您认为它们从未(或很少)使用,然后在 100 天后将其删除。
推荐阅读
- javascript - 通过 javascript 录制网站的内部音频
- django - Django覆盖保存方法,在更新模型上复制图像
- python-3.x - 断开特定用户与频道的连接
- reporting-services - 在 MS Teams 频道中的选项卡上显示 ssrs 报告
- docker - Docker Compose 的 Kafka 连接问题
- c# - Asp.Net核心实时数据库?
- c - 用太少的参数调用隐式声明的函数:为什么没有链接器错误?
- javascript - 用数组填充 html 表的问题
- python - 从两个不同的函数获取数据框并写入两个不同的 Excel 表
- macos - 在 Mac 中为每个 Python3 项目重复安装 openpyxl