Назад | Перейти на главную страницу

Есть ли способ включить управление версиями Amazon S3 для существующих объектов?

Во всей информации, которую я прочитал об управлении версиями объектов AWS S3, конкретно упоминается следующее:

Объекты, хранящиеся в вашей корзине до того, как вы установили состояние управления версиями, имеют идентификатор версии null. Когда вы включаете управление версиями, существующие объекты в вашей корзине не меняются. Что меняет, так это то, как Amazon S3 обрабатывает объекты в будущих запросах. В темах этого раздела объясняются различные операции с объектами в корзине с поддержкой управления версиями.

источник

В настоящее время у меня в корзине около 2 ТБ (370К объектов) данных. Насколько я понимаю, если я включу управление версиями сейчас, то для будущих объектов будут созданы версии. Мой вопрос: А как насчет существующих объектов? Я застрял без них, не имея версий, или есть способ их версии без загрузки / повторной загрузки? Я не нашел никакой информации, пока делал Google Fu, поэтому хотел пинговать коллектив здесь.

Спасибо.

Извини, чувак, но ты застрял.

Чтобы получить доступ к предыдущим версиям, необходимо включить управление версиями.

С версией отключен или с версией приостановлено, вы не можете получать никакие журналы изменений. Файл просто перезаписывается.

Если null версия уже существует в корзине, null версия перезаписывается, как показано на следующем рисунке.

Отсутствие включения управления версиями соответствует той же политике. Но выглядит больше так:

Где объект с идентификатором версии null просто продолжает перезаписываться. Если бы в AWS было настроено управление версиями по умолчанию, им, вероятно, не хватило бы места.

Обновить: элементы, уже находящиеся в корзине, сразу же начнут управлять версиями, когда вы ее включите.

Когда вы включаете управление версиями в корзине, существующим объектам не присваивается идентификатор версии. Вместо этого у них будет идентификатор версии null. Любые предыдущие версии не восстанавливаются автоматически.

В остальном существующие объекты в будущем будут версироваться как обычно.

Новым объектам, добавленным в сегмент или измененным в нем, будет присвоен уникальный идентификатор версии.

После включения управления версиями, если вы перечислите все версии объекта, вы заметите, что последняя (самая старая) версия будет иметь идентификатор версии null, если исходная версия существовала до включения управления версиями.

Когда вы включаете управление версиями в существующей корзине S3, управление версиями «работает» для существующих объектов (в зависимости от того, что именно вы ожидаете!).

Если вы удалите старый объект, он просто использует маркер удаления. Вы можете восстановить этот старый объект удалив маркер удаления обычным способом. Вот что я вижу после удаления:

aws s3api list-object-versions --bucket my-example-bucket --prefix myfile

{
    "Versions": [
        {
            "ETag": "\"0123456789abcdef0123456789abcdef\"",
            "Size": 10,
            "StorageClass": "STANDARD",
            "Key": "myfile",
            "VersionId": "null",
            "IsLatest": false,
            "LastModified": "2020-07-02T12:59:44+00:00",
            "Owner": {
                "DisplayName": "aws-dev",
                "ID": "7930123456789abcdef0123456789abcdef0123456789abcdef0123456789abc"
            }
        }
    ],
    "DeleteMarkers": [
        {
            "Owner": {
                "DisplayName": "aws-dev",
                "ID": "7930123456789abcdef0123456789abcdef0123456789abcdef0123456789abc"
            },
            "Key": "myfile",
            "VersionId": "ABCDEFGHIJKLMN_ABCDEFGHIJKLMNOPQ",
            "IsLatest": true,
            "LastModified": "2020-07-02T13:06:53+00:00"
        }
    ]
}