Мгновенное время ожидания AWS API Gateway при использовании child_process в Lambda

У меня есть лямбда-функция, которую я вызываю с помощью шлюза 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);
}

Любые мысли будут оценены. Спасибо!

Возможно, в exec.spawnSync есть ошибка, и тип ошибки просто не передается правильно? заверните exec.spawnSync в пробную ловушку и узнайте.

Geert-Jan 13.08.2018 20:02

Пытался добавить try / catch, но лямбда работает правильно. Ошибок не обнаружено. Вызов FFMPEG приводит к успешному выполнению.

aokelly 13.08.2018 20:21

Что находится в журнале API Gateway?

Michael - sqlbot 14.08.2018 03:40

В журналах не так много вещей, которые выглядели бы полезными, и они слишком длинные, чтобы публиковать их здесь, в комментариях. В основном это преамбула для настройки вызова API, затем этот 23:26:01 Отправка запроса на https: // << LAMBDA ARN >> 23:26:01 Выполнение не удалось из-за ошибки тайм-аута 23:26:01 Метод завершено со статусом: 504

aokelly 14.08.2018 16:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
533
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме