Я загружаю файл с устройства Android в корзину S3 с помощью этого кода
TransferUtility trasnferManager = new TransferUtility(s3, context); trasnferManager.upload(..,..,..);
После этого у меня есть лямбда-триггер, прикрепленный к событию S3: ObjectCreated.
Когда выполняется лямбда, я пытаюсь получить файл с помощью функции S3.getObject (). К сожалению, иногда я получаю сообщение об ошибке «NoSuchKey: указанный ключ не существует:». После этого лямбда повторяется несколько раз, успешно получает файл и продолжает его выполнение.
На мой взгляд, лямбда-функция выполняется до того, как файл в S3 станет доступным? Но это не должно происходить по замыслу. Триггер должен сработать после завершения загрузки файла на S3.
Согласно объявлению от 4 августа 2015 г.:
Корзины Amazon S3 в всех регионах обеспечивают согласованность чтения после записи для PUTS новых объектов и возможную согласованность для перезаписи PUTS и DELETES.
Согласованность чтения после записи позволяет извлекать объекты сразу после создания в Amazon S3.
Но до этого:
Все регионы, кроме Стандарт США (переименованного в Восток США (Северная Вирджиния)), поддерживали согласованность чтения после записи для новых объектов, загруженных на Amazon. S3.
Моя корзина находится в регионе Восток США (Северная Вирджиния) и создана до 4 августа 2015 г.. Не знаю, может ли это быть проблемой …
РЕДАКТИРОВАТЬ: 20.10.2016
Согласно документации — СОГЛАСОВАННОЕ ЧТЕНИЕ < Операция / strong> может вернуть НЕТ РЕЗУЛЬТАТА, даже если до нее были выполнены две или более операций ЗАПИСЬ.
В этом примере и W1 (запись 1), и W2 (запись 2) завершаются до начала R1 (чтение 1) и R2 (чтение 2). Для согласованного считывания R1 и R2 возвращают цвет = рубиновый. Для в конечном итоге согласованного чтения R1 и R2 могут возвращать цвет = красный, цвет = рубин или отсутствие результатов, в зависимости от количества прошедшего времени.
Укажите конечную точку, которую вы используете, и добавьте дополнительный код в свой вопрос. Это может помочь — forum.aws.amazon.com/ann.jspa?annID= 3112 — person bpavlov schedule 19.08.2016
Я использую s3.amazonaws.com. Я считаю, что это устарело, потому что, как говорят, корзины Amazon S3 во всех регионах обеспечивают согласованность чтения после записи без дополнительной информации. — person bpavlov schedule 19.08.2016
У меня похожая проблема, но не всегда. Я обнаружил, что с большими файлами такое случается. У меня есть событие, запускающее лямбда, и большую часть времени лямбда затем пытается переместить файл и успешно. В файлах большего размера (38 МБ jpg) он сообщает, что их не существует, и дает сбой. Как только лямбда повторно инициализируется для повторной попытки из-за сбоя, она работает нормально. Кажется смешным, что событие запускается до того, как файл станет доступным. — person bpavlov schedule 06.09.2016
То же самое. Даже с небольшими файлами. @Joel — person bpavlov schedule 08.12.2016
Кому-нибудь уже удалось это исправить? — person bpavlov schedule 08.12.2016
+1, мы используем сингапурский центр, и он сталкивается с этой проблемой для новых файлов. В среднем это происходит один раз на каждые 500 загруженных файлов. — person bpavlov schedule 06.01.2017
Источник: