Ответ
Откат в 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.