代码之家  ›  专栏  ›  技术社区  ›  Akshay Vijay Jain

在具有生命周期的S3中理解对象删除和版本控制

  •  0
  • Akshay Vijay Jain  · 技术社区  · 4 年前

    以下策略状态将在30天后删除对象的当前版本,并在30天后删除上一版本。

    现在假设我在4月1日在一个启用了版本的bucket中上传一个对象,然后在4月10日上传同一个对象。



    新版本和旧版本会在5月10日被删除吗?还是,旧版本会在4月30日被删除,新版本会在5月10日被删除?

    {
            "Rules": [{
                            "ID": "DeletionOfFileBasedOnQATag",
    
                            "Status": "Enabled",
                            "Expiration": {
                                    "Days": 30
                            },
                            "NoncurrentVersionExpiration": {
                                    "NoncurrentDays": 30
                            }
                    }
            ]
    }
    
    
    
    
    0 回复  |  直到 4 年前
        1
  •  2
  •   LucasPC    4 年前

    在回答你的问题之前,让我先弄清楚我了解的一些基本情况:

    当前版本 . 每当新的更新发生在 当前版本 ,新版本将堆叠在顶部并成为 剩下的就变成了一套 按顺序(因为它们的行为就像一堆东西)。

    根据您政策的第一部分:

                        "Expiration": {
                                "Days": 30
                        }
    

    非电流

    资料来源: AWS - Elements to describe lifecycle actions in versioned buckets - Expiration action element - Versioned bucket

    根据您政策的第二部分:

                        "NoncurrentVersionExpiration": {
                                "NoncurrentDays": 30
                        }
    

    AWS Documentation of Lifecycle rules based on object's age . 在生命周期配置中指定非当前版本转换和非当前版本扩展操作的天数时,请注意以下事项:

    它是从对象的版本变为 非当前(即对象被覆盖或删除时),即 amazons3将对指定的一个或多个对象执行操作。

    每当一个新版本被放在堆栈的顶部时。时间标记将在发生此操作时更新。

    非电流

    结论

    新版本和旧版本会在5月10日删除吗?还是旧版本 版本在4月30日被删除,新版本在4月30日被删除 5月10日?

    两个版本将于5月10日(4月10日+30天)删除。因为新版本将有一个从5月10日开始计算的时间标记,但旧版本也将同时被删除(如果在此期间没有其他事情发生),因为当新版本被创建时,旧版本也会被更新。两个都在同一时刻。

    我希望这有帮助。

        2
  •  0
  •   Akshay Vijay Jain    4 年前



    当前版本将在5月10日过期,因为它是在4月10日创建的(我们的过期时间为30天)

    非当前版本将在5月10日到期,因为它也在4月10日创建=修改(并且我们有非当前到期=30天)


    amazons3只维护每个对象的最后修改日期。为了 例如,amazons3控制台显示了 对象属性窗格。当您最初创建一个新对象时 日期反映对象的创建日期。如果你更换 对象,则日期会相应更改。 日期,它是术语“上次修改日期”的同义词 . https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-number-of-days

    action元素使用此操作指定在amazons3永久删除非当前对象版本之前,要保留多长时间(从对象变为非当前对象时算起)。无法恢复已删除的对象。

    这种延迟删除非当前对象的方法在您 需要更正任何意外的删除或覆盖。例如,你 可以配置过期规则以删除非当前版本 在它们变得不流动的几天后。例如,假设 2014年1月1日上午10:30 UTC,您创建了一个名为照片.gif(版本 编号111111)。2014年1月2日上午11:30 UTC,您意外删除 新版本ID(例如版本ID 4857693)。你现在有五天时间 恢复的原始版本照片.gif(版本ID 111111)之前 for expiration执行并永久删除照片.gif(版本ID) 111111),在它成为非当前版本的五天后。 https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions