Версионирование объектов в хранилище S3 позволяет сохранять несколько версий одного объекта в бакете. Это помогает защитить данные от случайного удаления или изменения, а также восстановить старую версию объекта, если что-то пошло не так. В этой статье мы расскажем, как включить версионирование в S3-бакете и работать с версиями с помощью AWS CLI.
Как включить версионирование объектов
Для включения версионирования объектов с помощью AWS CLI выполните команду:
aws s3api put-bucket-versioning --bucket bucket_name --versioning-configuration Status=Enabled --endpoint-url=https://s3.regru.cloud
Эта команда активирует версионирование для указанного бакета.
Как проверить работу версионирования
Чтобы убедиться, что версионирование включено, выполните команду:
aws s3api get-bucket-versioning --bucket bucket_name --endpoint-url=hhttps://s3.regru.cloud
Версионирование работает, если в ответе вы видите следующее значение:
"Status": "Enabled"
Загрузите несколько версий объекта с одинаковым именем, а затем получите список его версий с помощью команды:
aws s3api list-object-versions --bucket bucket_name --prefix object_key --endpoint-url=https://s3.regru.cloud
Вы увидите список версий загруженного объекта со следующей структурой:
{
"Versions": [
{
"Key": "test.txt",
"VersionId": "jlooq5DamiKGF7zLiaoGsDlqyAPliZs",
"IsLatest": true
},
{
"Key": "test.txt",
"VersionId": "PhsL6jJizplKq8KlbaupAlibvMai1Ip",
"IsLatest": false
}
]
}
Как работать с версиями объектов
Список версий конкретного объекта
Чтобы получить все версии конкретного объекта в бакете, воспользуйтесь командой:
aws s3api list-object-versions --bucket bucket_name --prefix object_key --endpoint-url=https://s3.regru.cloud
Список всех объектов с их версиями
Чтобы получить список всех объектов в бакете вместе с их версиями, введите команду:
aws s3api list-object-versions --bucket bucket_name --query 'Versions[*].[Key, VersionId, Size]' --endpoint-url=https://s3.regru.cloud
Скачивание определенной версии объекта
Чтобы скачать определенную версию объекта, воспользуйтесь командой:
aws s3api get-object --bucket bucket_name \
--key object_key \
--version-id VersionId \
localfile.txt \
--endpoint-url https://s3.regru.cloud
Восстановление конкретной версии объекта
Чтобы восстановить предыдущую версию объекта, вы можете скопировать ее поверх текущей с помощью команды:
aws s3api copy-object --bucket bucket_name \
--key object_key \
--copy-source bucket_name/object_key?versionId=VersionId \
--endpoint-url https://s3.regru.cloud
Удаление конкретной версии объекта
Удалить конкретную версию объекта можно с помощью команды:
aws s3api delete-object --bucket bucket_name --key object_key --version-id VersionId --endpoint-url=https://s3.regru.cloud
Как настроить автоматическое удаление старых версий
Чтобы автоматически удалять старые версии объектов, можно настроить жизненный цикл объектов. Для этого:
-
1
Создайте файл (например, lifecycle.json) со следующим содержимым:
{ "Rules": [ { "ID": "DeleteOldVersions", "Status": "Enabled", "Filter": {}, "NoncurrentVersionExpiration": { "NoncurrentDays": 14 } } ] }
Это правило удалит неактуальные версии объектов, которым больше 14 дней. Последние версии объектов останутся нетронутыми.
-
2
Для управления версиями объектов в S3 примените политики жизненного цикла с помощью команды:
aws s3api put-bucket-lifecycle-configuration --bucket bucket_name --lifecycle-configuration file://lifecycle.json --endpoint-url=https://s3.regru.cloud
-
3
Убедитесь, что политика применилась, с помощью команды:
aws s3api get-bucket-lifecycle-configuration --bucket bucket_name --endpoint-url=https://s3.regru.cloud
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊