AWS S3 не запускает лямбда-функцию после загрузки.

У меня проблема с AWS Lambda и S3.

Я развертываю всю свою архитектуру AWS с помощью terraform. У меня есть корзина, в которую я могу загружать XML-файлы, которые запускают лямбда-выражение для обработки этих файлов (события хорошо проинформированы).

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

Иногда мне нужно отправить несколько файлов на S3, прежде чем они начнут учитываться, или я изменяю уведомления в консоли S3 с помощью графического интерфейса, ничего не меняя и просто нажимая «Сохранить». Я не знаю, как исследовать эту проблему.

Не могли бы вы сказать, был ли у кого-нибудь подобный случай? Кроме того, знаете ли вы, можно ли просмотреть историю всего, что происходит в корзине S3 (загруженные файлы, отправленные события, ...), чтобы исследовать мою проблему?

Заранее спасибо.


person gdahugo    schedule 30.01.2020    source источник
comment
У вас включен Cloudwatch для Lambda? Триггер PutObject в сегменте S3 для Lambda должен срабатывать при каждом событии, поэтому отслеживание того, что происходит с этими событиями в Cloudwatch, было бы первым, на что я бы обратил внимание.   -  person Joseph Lane    schedule 30.01.2020
comment
Как узнать, что лямбда не сработала? Это связано с тем, что действие, которое должна выполнить лямбда, не было выполнено, или потому, что вы проверили журналы облачного наблюдения лямбда и видите, что лямбда не была вызвана? Между ними огромная разница. Я подозреваю, что это первое, что связано с проблемой в этом лямбда-коде и может объяснить его периодический сбой.   -  person 404    schedule 30.01.2020
comment
Можете поделиться конфигурацией ведра? Когда вы включаете уведомление для Lambda. Следуйте: Bucket ›Свойства› События С уважением.   -  person Danilo Alves    schedule 30.01.2020
comment
Привет и спасибо за ответы. Я сказал, что лямбда никогда не срабатывает, когда я загружаю первые объекты, потому что, когда я смотрю журналы CloudWatch на предмет лямбда, журналов нет, и мы видим, что лямбда не вызывается.   -  person gdahugo    schedule 30.01.2020
comment
Событие моего ведра находится на каждом объекте, созданном в папке загрузки / с расширением .xml, запускает лямбда   -  person gdahugo    schedule 30.01.2020
comment
Знаете ли вы, можно ли просмотреть историю всех уведомлений, отправленных AWS S3, чтобы узнать, отправлено ли событие или проблема здесь?   -  person gdahugo    schedule 30.01.2020
comment
Сегодня днем ​​я снова сделал тест, разворачиваю свою архитектуру с помощью terraform. Закачиваю файл в ведро, лямбда никогда не вызывается, в cloudwatch нет логов. Я жду 15 минут, снова загружаю файл в свою корзину, и на этот раз лямбда правильно называется, без каких-либо изменений в конфигурации S3 или Lambda.   -  person gdahugo    schedule 30.01.2020
comment
Я знаю, что это звучит просто, но пробовали ли вы загрузить объект, который не запускает лямбду, а затем снова загрузить тот же объект? Если он никогда не запускает лямбду, даже при второй загрузке, это как-то связано с настройками события создания объекта или форматом объекта, если он запускает его при повторной загрузке, это что-то новое для меня.   -  person Joseph Lane    schedule 30.01.2020
comment
Привет, это то, что я делаю. Загрузка того же объекта через 5 минут вызывает лямбду. Мне кажется, что между моментом, когда я настраиваю событие, и временем, когда оно действительно активно, есть какая-то задержка.   -  person gdahugo    schedule 03.02.2020


Ответы (1)


Ключ к тому, что вы испытываете, заключается в том, что это происходит сразу после создания корзины и триггера. Многие системы AWS имеют модель конечной согласованности. В случае S3 и объекты, и сегменты в конечном итоге согласованы в трех зонах доступности.

Короче говоря, вы помещаете объект в один из экземпляров S3 перед триггером события в этом экземпляре S3.

person WaltDe    schedule 31.01.2020
comment
Привет и спасибо за ответ. Я не уверен, что понимаю, вся архитектура, которую я развертываю, находится только в одном регионе AWS. Есть ли какая-то задержка перед тем, как действительно сработают первые события? - person gdahugo; 03.02.2020
comment
Короче говоря, да, ожидайте, что изменение конфигурации вступит в силу. - person WaltDe; 05.02.2020