Как откатиться на предыдущую версию объекта в Amazon S3?

«Как откатиться на предыдущую версию объекта в Amazon S3?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Откат в S3 возможен, если для бакета включено версионирование объектов. Процесс заключается в копировании нужной предыдущей версии поверх текущей.

1. Включите версионирование (если еще не сделано):

aws s3api put-bucket-versioning 
    --bucket my-bucket-name 
    --versioning-configuration Status=Enabled

2. Найдите ID нужной версии объекта:

aws s3api list-object-versions 
    --bucket my-bucket-name 
    --prefix path/to/my-object.txt

В ответе найдите VersionId для нужной версии (например, ABC123def456).

3. Скопируйте старую версию, сделав ее текущей:

aws s3api copy-object 
    --bucket my-bucket-name 
    --key path/to/my-object.txt 
    --copy-source "my-bucket-name/path/to/my-object.txt?versionId=ABC123def456"

Эта команда создаст новую версию объекта с содержимым из указанной старой версии.

Для автоматизации в CI/CD пайплайне (например, при неудачном деплое) можно использовать скрипт, который фиксирует VersionId перед загрузкой новой версии и выполняет откат по триггеру. Если версионирование отключено, восстановление возможно только из резервной копии (если настроена) или архива S3 Glacier.