AWS Lambda, подключенная к событию S3 ObjectCreated, возвращает «NoSuchKey: указанный ключ не существует:

Я загружаю файл с устройства 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

Источник: ledsshop.ru

Стиль жизни - Здоровье!