Понимание удаления объекта с контролем версий в S3 с жизненным циклом - PullRequest
1 голос
/ 30 апреля 2020

Следующие правила политики позволяют удалить текущую версию объекта через 30 дней и предыдущую версию через 30 дней. Теперь предположим, что я загружаю объект 1 апреля в корзину с включенной версией, а затем загружаю тот же объект 10 апреля. Если бы я не загрузил вторую версию, текущий объект был бы удален 30 апреля. Поэтому мой вопрос: что произойдет, если я загрузил вторую версию 10 апреля.

Если новая версия и старая версия будут удалены как 10 мая, ИЛИ, старая версия будет удалена 30 апреля, а новая версия получена удалена 10 мая?

{
        "Rules": [{
                        "ID": "DeletionOfFileBasedOnQATag",

                        "Status": "Enabled",
                        "Expiration": {
                                "Days": 30
                        },
                        "NoncurrentVersionExpiration": {
                                "NoncurrentDays": 30
                        }
                }
        ]
}



Ответы [ 2 ]

0 голосов
/ 02 мая 2020

На основании приведенных ниже выдержек из AWS Документов, в текущем случае оба объекта (последняя версия и предыдущая версия) будут удалены 10 мая Текущая версия истекает 10 мая, так как она создана 10 апреля (у нас срок действия = 30 дней) Не текущая версия истекает 10 мая, так как она также создана = изменена 10 апреля (и у нас нет текущей даты истечения = 30 дней)

Amazon S3 поддерживает только дату последнего изменения для каждого объекта. Например, консоль Amazon S3 показывает дату последнего изменения в панели свойств объекта. Когда вы изначально создаете новый объект, эта дата отражает дату создания объекта. Если вы замените объект, дата изменится соответственно. Таким образом, когда мы используем термин «дата создания», он является синонимом термина «дата последнего изменения» . ref: https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro -lifecycle-rules-number-of-days

NoncurrentVersionExpiration элемент действия - используйте это действие, чтобы указать, как долго (из время, когда объекты перестали быть текущими) вы хотите сохранить версии не текущих объектов до того, как Amazon S3 окончательно удалит их. Удаленный объект не может быть восстановлен.

Это отложенное удаление не текущих объектов может быть полезно, когда вам необходимо исправить любые случайные удаления или перезаписи. Например, вы можете настроить правило истечения срока действия для удаления не текущих версий через пять дней после того, как они станут непостоянными. Например, предположим, что 1 января 2014 года в 10:30 UT C вы создали объект с именем photo.gif (идентификатор версии 111111). 1/2/2014 11:30 UT C вы случайно удалили photo.gif (идентификатор версии 111111), который создает маркер удаления с новым идентификатором версии (например, идентификатором версии 4857693). Теперь у вас есть пять дней, чтобы восстановить исходную версию photo.gif (идентификатор версии 111111) до окончательного удаления. 08.01.2014 00:00 UT C правило жизненного цикла с истечением срока действия выполняет и окончательно удаляет photo.gif (идентификатор версии 111111) через пять дней после того, как оно стало не текущей версией. https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro -lifecycle-rules-actions

0 голосов
/ 02 мая 2020

Прежде чем пытаться ответить на ваш вопрос, позвольте мне прояснить некоторые основы, которые я понимаю:

Представьте себе ваш файл S3, который является версией стека, внутри которого содержится набор файлов с currentversion и 0 или несколько невключение . Всякий раз, когда новое обновление происходит с currentversion , новая версия находится на вершине стека и становится currentversion , тогда как остальные становятся набором noncurrentversion по порядку (так как они ведут себя как стек).

Несмотря на то, что в вашей конфигурации S3 не включено управление версиями, используется та же схема. В этих случаях невозврат устанавливается на 0, а механизм управления версиями отключен.

Учтите, что каждый объект этого «стека» в файле S3 содержит метку времени, установленную в то время, когда объект создается и добавляется в верхнюю часть стека.

На основе первого раздела вашей политики:

                    "Expiration": {
                            "Days": 30
                    }

Каждый раз, когда запускается это правило, оно будет читать метку времени currentversion , и если он старше 30 дней, он будет удален. Это не влияет на не текущих версий объекта. Более того, последний

Источник: AWS - Элементы для описания действий жизненного цикла в корзинах с версиями - Элемент действия с истечением срока действия - Версионная корзина

На основе второго раздела вашей политики :

                    "NoncurrentVersionExpiration": {
                            "NoncurrentDays": 30
                    }

Читая в AWS Документацию правил жизненного цикла, основанную на возрасте объекта . При указании количества дней в действиях NoncurrentVersionTransition и NoncurrentVersionExpiration в конфигурации жизненного цикла обратите внимание на следующее:

Это число дней, когда версия объекта становится не текущей (то есть когда объект перезаписывается или удаляется), что Amazon S3 будет выполнять действие с указанным объектом или объектами.

Всякий раз, когда новая версия помещается на вершину стека. Временная метка будет обновляться в тот момент, когда это действие произошло.

Каждый раз, когда запускается это правило, оно будет считывать метку времени всех не текущих объектов версии в стеке и, если есть, объект старше 30 дней, он будет удален.

Заключение

Будет ли новая версия и старая версия удалены как 10 мая, ИЛИ старая версия будет удалена 30 апреля, так и новая Версия get удалена 10 мая?

Обе версии будут удалены 10 мая (10 апреля + 30 дней). Потому что новая версия будет иметь метку времени, которая начнет отсчитываться с 10 мая, но и старая версия будет удалена в то же время (если больше ничего не произойдет за это время), потому что, когда новая версия создается, метка времени старый тоже обновляется. И то и другое одновременно.

Надеюсь, это поможет. И спасибо за исправления в комментариях ниже.

...