2016-06-07 5 views
0

У меня есть две службы, одна из которых загружается на S3 асинхронно, а вторая служба - постпроцессор, который выполняет некоторую дополнительную обработку загруженных файлов.Amazon S3 проверяет, полностью ли загружен файл

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

Он работает, если я выполняю блокировку загрузки, но производительность довольно плохая.

Есть ли способ проверить, полностью ли загружен файл на S3?

+2

* «Клиент S3 считает, что файл существует, потому что ключ существует» * Возможно, вы захотите более внимательно изучить это. Ключ не существует, пока загрузка не будет завершена, если, конечно, вы не перезаписываете существующий объект - загрузка на S3 является атомарной, поэтому ключ для нового объекта не существует до тех пор, пока загрузка не завершится успешно. –

+0

Не могли бы вы показать нам часть вашего кода, а также сообщить нам об исключении, которое происходит. Может быть, это другая проблема. – etalon11

ответ

0

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

0

Если вы включили события S3 в своем ковше с помощью консоли AWS S3, то после завершения загрузки будет отправлено сообщение о создании полного события. События могут быть опубликованы в SNS, SQS или AWS Lamba.

Смежные вопросы