У меня есть лямбда-функция, которую я вызываю с помощью шлюза API. Когда Lambda попадает в вызов spawn для объекта child_process, шлюз API немедленно дает сбой с ошибкой тайм-аута 504. Моя настройка тайм-аута на шлюзе API составляет максимум 30 секунд, а лямбда установлена на минуту. Для запуска лямбда требуется всего 1400 мс, но он по-прежнему сообщает о тайм-ауте в API. Лямбда успешно запускается после того, как API-шлюз получает 504.
Это происходит во время вызова FFMPEG и вызова для изменения размера изображения с помощью библиотеки Sharp. Это происходит независимо от того, использую ли я синхронные или асинхронные вызовы.
function resizeVideo(next) {
var ffmpegOutput = exec.spawnSync('ffmpeg', [
'-i', tmpFilePath,
'-f', 'image2',
'-frames:v', '1',
'-filter:v', 'scale=w=-1:h=' + MAX_HEIGHT + ":force_original_aspect_ratio=decrease",
'pipe:1'
]);
console.info(ffmpegOutput.stderr);
next(null, JPG_CONTENT_TYPE, ffmpegOutput.stdout);
}
Любые мысли будут оценены. Спасибо!
Пытался добавить try / catch, но лямбда работает правильно. Ошибок не обнаружено. Вызов FFMPEG приводит к успешному выполнению.
Что находится в журнале API Gateway?
В журналах не так много вещей, которые выглядели бы полезными, и они слишком длинные, чтобы публиковать их здесь, в комментариях. В основном это преамбула для настройки вызова API, затем этот 23:26:01 Отправка запроса на https: // << LAMBDA ARN >> 23:26:01 Выполнение не удалось из-за ошибки тайм-аута 23:26:01 Метод завершено со статусом: 504



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Коллега OP здесь. У нас это работает, и я просто хотел опубликовать сообщение на случай, если это когда-нибудь поможет кому-то еще с этой проблемой. Насколько я понимаю, это произошло из-за того, что тайм-аут был ошибочно установлен на низкое число (180), ошибочно думая, что это число было секундами. Мы обновили тайм-аут (до 29000) после того, как поняли, что значение должно быть указано в миллисекундах, но не осознавали, что нам нужно «развернуть» API, чтобы изменения вступили в силу. После повторного развертывания API проблема была решена.
Возможно, в
exec.spawnSyncесть ошибка, и тип ошибки просто не передается правильно? завернитеexec.spawnSyncв пробную ловушку и узнайте.