Как избежать перезаписи в S3 с помощью условных заголовков
Хранение файлов в S3 выглядит просто: добавляете объект в бакет по ключу и потом при необходимости удаляете или обновляете его. Но в реальной работе можно загрузить файл с помощью операции PutObject , не проверив, что в бакете уже лежит файл с этим ключом. В результате новое содержимое незаметно заменит старое. Или можно случайно удалить только что добавленный свежий бэкап вместо старого, что нарушает рабочий процесс. Чтобы избежать подобных ситуаций, в S3 есть условные операции записи (conditional write) — это когда действия вроде PutObject , CopyObject , DeleteObject или CompleteMultipartUpload выполняются только при соблюдении заданных условий. Всем привет! Меня зовут Клюев Алексей, я старший разработчик S3-совместимого объектного хранилища в Selectel . В этой статье мы разберем, как работают условные заголовки, зачем они нужны и как применять их на практике. В качестве примеров будем использовать язык Go и aws-sdk-go v2.


