以下策略规定要在30天后删除对象的当前版本,并在30天后删除对象的先前版本。现在,假设我于4月1日在启用版本的存储桶中上传了一个对象,然后于4月10日上传了相同的对象。如果我没有上传第二个版本,那么当前对象将在4月30日被删除。所以我的问题是,如果我在4月10日上传了第二个版本,会发生什么。
是否会在5月10日删除新版本和旧版本,还是在4月30日删除旧版本,并在5月10日删除新版本?
{
"Rules": [{
"ID": "DeletionOfFileBasedOnQATag",
"Status": "Enabled",
"Expiration": {
"Days": 30
},
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
}
]
}
在尝试回答您的问题之前,请先让我先了解一些我理解的基本知识:
想象一下您的S3文件版本为堆栈,其中内部包含一组currentversion和0或多个noncurrenversion的文件。每当currentversion发生新更新时,新版本就会堆叠在顶部,并成为currentversion,而其余版本则依次成为一组[[noncurrentversion(因为它们的行为就像堆叠一样)) 。
尽管您的S3配置未启用版本控制,但使用的是相同的架构。在这些情况下,noncurrenversion设置为0,并且禁用版本控制机制。考虑到S3文件中此“堆栈”的每个对象都包含一个时间戳,该时间戳是在创建对象并将其添加到堆栈顶部时设置的。从那时起,该标记将跟随该对象,并且不会更改。因此,通过考虑在触发策略时对象是属于
当前版本
还是非当前版本来应用每个策略。 根据政策的第一部分: "Expiration": {
"Days": 30
}
每次触发此规则时,它将读取currentversion
根据政策的第二部分:
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
每次触发此规则时,它将读取堆栈中所有noncurrent
结论
新版本和旧版本都会在5月10日删除,还是旧版本版本在4月30日被删除,新版本在4月30日被删除5月10日?
旧版本将在4月30日删除,因为它的时间标记会早于30天。新版本将于5月10日(4月10日+ 30天)删除。
我希望这会有所帮助。