Фон
Мы используем Amazon S3 в нашем проекте как хранилище для файлов, загружаемых клиентами.
По техническим причинам мы загружаем файл на S3 с временным именем, затем обрабатываем его содержимое и переименовываем файл после его обработки.
Проблема
Операция "переименовать" не работает с ошибкой 404 (key not found)
, но файл, который был переименован, был успешно загружен.
Amazon docs упоминает эту проблему:
Amazon S3 обеспечивает высокую доступность путем репликации данных на нескольких серверах в центрах обработки данных Amazon. Если запрос PUT будет успешным, ваши данные будут сохранены. Однако информация об изменениях должна повторяться через Amazon S3, которая может принимать некоторое время, и поэтому вы можете наблюдать следующие варианты поведения:
Мы внедрили какой-то опрос в качестве обходного пути: повторите операцию "переименовать", пока она не удастся.
Опрос останавливается через 20 секунд.
Это обходное решение работает в большинстве случаев: файл реплицируется в течение нескольких секунд.
Но иногда - очень редко - 20 секунд недостаточно; репликация в S3 занимает больше времени.
Вопросы
-
Какое максимальное время вы наблюдали между успешной операцией PUT и полной репликацией на Amazon S3?
-
Предлагает ли Amazon S3 способ "обходить" репликацию? ( "Мастер" напрямую?)