Aks*_*ain 6 versioning lifecycle amazon-s3 amazon-web-services
以下策略规定在 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
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
在尝试回答您的问题之前,让我先澄清一些我所理解的基础知识:
想象一下您的 S3 文件作为一个堆栈进行版本控制,其中包含一组具有currentversion和 0 或多个noncurrentversion的文件。每当currentversion发生新更新时,新版本就会在堆栈顶部并成为currentversion,而其余版本则按顺序变成一组非currentversion(因为它们的行为类似于堆栈)。
尽管您的 S3 配置未启用版本控制,但仍使用相同的架构。在这些情况下,noncurrentversion 设置为 0 并且版本控制机制被禁用。
考虑一下 S3 文件中此“堆栈”的每个对象都包含一个时间标记,该时间标记是在创建对象并将其添加到堆栈顶部时设置的。
"Expiration": {
"Days": 30
}
Run Code Online (Sandbox Code Playgroud)
每次触发此规则时,它都会读取当前版本的时间标记,如果早于 30 天,则会将其删除。它对非当前对象版本没有影响。而且最后的
来源: AWS - 描述版本化存储桶中生命周期操作的元素 - 过期操作元素 - 版本化存储桶
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
Run Code Online (Sandbox Code Playgroud)
通过阅读基于对象年龄的生命周期规则的AWS文档。在生命周期配置中指定 NoncurrentVersionTransition 和 NoncurrentVersionExpiration 操作的天数时,请注意以下事项:
它是从对象版本变为非当前版本(即对象被覆盖或删除时)起,Amazon S3 将对指定对象执行操作的天数。
每当新版本被放入堆栈顶部时。时间标记将在该操作发生时更新。
每次触发此规则时,它都会读取堆栈中所有非当前版本对象的时间标记,如果任何对象早于 30 天,则会将其删除。
新版本和旧版本都会在5月10日删除吗?或者,旧版本会在4月30日删除,新版本会在5月10日删除吗?
这两个版本将于 5 月 10 日(4 月 10 日 + 30 天)删除。因为新版本会有一个时间标记,从 5 月 10 日开始计算,但旧版本也会同时被删除(如果在此期间没有发生其他事情),因为当新版本创建时,时间标记旧的也正在更新。确实是在同一时刻。
我希望这有帮助。并感谢以下评论中的更正。
根据 AWS 文档的以下摘录,在当前情况下,两个对象(最新版本和先前版本)都将在 5 月 10 日被删除
当前版本将在 5 月 10 日过期,因为它是在 4 月 10 日创建的(我们有过期时间) = 30 天)
\n
非当前版本将于 5 月 10 日到期,因为它也在 4 月 10 日创建=修改(并且我们的非当前到期 = 30 天)
\n\n\nAmazon S3 仅维护每个对象的最后修改日期。例如,Amazon S3 控制台在对象属性窗格中显示上次修改日期。当您最初创建新对象时,此日期反映了对象的创建日期。如果替换\n 对象,日期会相应更改。因此,当我们使用术语创建日期时,它与术语上次修改日期同义。参考:https: //docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html #intro-lifecycle-rules-number-of-days
\n
NoncurrentVersionExpiration操作元素 \xe2\x80\x93 使用此操作可以指定在 Amazon S3 永久删除非当前对象版本之前您希望保留非当前对象版本的时间(从对象变为非当前的时间起)。已删除的对象无法恢复。
\n\n\n\n当您需要更正任何意外删除或覆盖时,延迟删除非当前对象可能会很有帮助。例如,您可以配置过期规则,在非当前版本变为非当前版本五天后将其删除。例如,假设您在 UTC 时间 2014 年 1 月 1 日上午 10:30 创建了一个名为 photo.gif 的对象(版本 ID 111111)。在 UTC 时间 2014 年 1 月 2 日上午 11:30,您意外删除了 photo.gif(版本 ID 111111),这会创建一个带有新版本 ID(例如版本 ID 4857693)的删除标记。在永久删除之前,您现在有五天时间恢复 photo.gif 的原始版本(版本 ID 111111)。UTC 时间 2014 年 1 月 8 日 00:00,到期的生命周期规则\n 执行并永久删除 photo.gif(版本 ID\n 111111),五天后它成为非当前版本。\n https://docs。 aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions
\n
归档时间: |
|
查看次数: |
15288 次 |
最近记录: |