Aws s3 заменить файл атомарно

Окружающая среда

  • Я скопировал файл, ./barname.bin, на s3, используя команду aws s3 cp ./barname.bin s3://fooname/barname.bin

  • У меня есть другой файл, ./barname.1.bin, который я хочу загрузить вместо этого файла


Как я могу загрузить и заменить (переписать) файл в s3://fooname/barname.bin с помощью ./barname.1.bin?

Цели:

  • Не меняйте URL-адрес s3, используемый для доступа к файлу (новый файл также должен быть доступен в s3://fooname/barname.bin).
  • нулевое/минимальное время простоя/недоступность ссылки s3.

Ответ 1

Насколько я понимаю, у вас есть существующий файл, расположенный в s3://fooname/barname.bin, и вы хотите заменить его новым файлом. Чтобы заменить это, вы должны просто загрузить новый поверх старого: aws s3 cp ./barname.1.bin s3://fooname/barname.bin.

Старый файл будет заменен. Согласно документам S3, это атомарное, хотя из-за шаблона репликации в EC2 запросы на ключ могут все еще возвращать старый файл в течение некоторого времени.

Примечание (спасибо @Chris Kuehl): хотя замена технически атомарна, для многочастных загрузок возможно получить фрагменты из разных версий файла. 😬