Как включить версионирование в бакете через AWS CLI

Версионирование включается на уровне бакета и действует на все объекты в нём. Ниже — включение, проверка и приостановка через AWS CLI. О самом механизме читайте в статье «Что такое версионирование в S3».


Что потребуется

  • Настроенный профиль AWS CLI (см. «Как создать профиль подключения к S3 в AWS CLI»).
  • Права на изменение конфигурации бакета.
  • Адрес эндпоинта вашего бакета. Во всех примерах используется https://s3-msk2.rtcloud.ru — подставляйте адрес из строки «Путь» своего бакета.

Включение версионирования

Выполните команду:

aws s3api put-bucket-versioning \
  --bucket <ИМЯ_БАКЕТА> \
  --versioning-configuration Status=Enabled \
  --profile rtcloud \
  --endpoint-url https://s3-msk2.rtcloud.ru

Успешное выполнение ничего не выводит в консоль — это нормально. Проверьте состояние отдельной командой:

aws s3api get-bucket-versioning \
  --bucket <ИМЯ_БАКЕТА> \
  --profile rtcloud \
  --endpoint-url https://s3-msk2.rtcloud.ru

Ожидаемый результат:

{
    "Status": "Enabled",
    "MFADelete": "Disabled"
}

Пустой ответ означает, что версионирование для бакета никогда не включалось.


Проверка работы

Убедиться, что версии создаются, можно на тестовом файле.

Шаг 1. Создайте файл и загрузите его в бакет

echo "Версия 1" > testfile.txt

aws s3 cp testfile.txt s3://<ИМЯ_БАКЕТА>/ \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Шаг 2. Измените файл и загрузите повторно под тем же именем

echo "Версия 2" > testfile.txt

aws s3 cp testfile.txt s3://<ИМЯ_БАКЕТА>/ \
  --profile rtcloud --endpoint-url https://s3-msk2.rtcloud.ru

Шаг 3. Запросите список версий

aws s3api list-object-versions \
  --bucket <ИМЯ_БАКЕТА> \
  --prefix testfile.txt \
  --profile rtcloud \
  --endpoint-url https://s3-msk2.rtcloud.ru

Пример результата:

{
    "Versions": [
        {
            "Key": "testfile.txt",
            "VersionId": "S7hpDH6F0RYfubNoTjin6hpBu5ewDj.",
            "IsLatest": true
        },
        {
            "Key": "testfile.txt",
            "VersionId": "pdFehsuCbaPz2hNh4b9DBndfEwzjTfH",
            "IsLatest": false
        }
    ]
}

Поле IsLatest со значением true отмечает актуальную версию. Обычный листинг бакета покажет только один объект — версии в него не попадают.


Приостановка версионирования

Чтобы прекратить создание новых версий, выполните ту же команду со значением Suspended:

aws s3api put-bucket-versioning \
  --bucket <ИМЯ_БАКЕТА> \
  --versioning-configuration Status=Suspended \
  --profile rtcloud \
  --endpoint-url https://s3-msk2.rtcloud.ru

Ранее созданные версии сохранятся и останутся доступными для восстановления, но новые записи перестанут порождать версии. Чтобы освободить место, версии нужно удалить отдельно — вручную или правилом жизненного цикла.

Важно! Полностью отключить версионирование для бакета нельзя — его можно только приостановить.


Смотрите также:

к Работе с S3 RTCloud


Рейтинг@Mail.ru Яндекс.Метрика