Ответ на мой вопрос здесь: https://www.twilio.com/docs/runtime/functions/invocation#callback -и-асинхронные-ограничения
Обратный вызов и асинхронные ограничения
Важно отметить что когда вызывается функция обратного вызова, она прекращает все выполнение вашей функции. Это включает в себя любые асинхронные процессы, которые вы могли запустить во время выполнения вашего обработчика.
По этой причине, если вы используете библиотеки, которые изначально являются асинхронными, вам нужно вложить свой вызов в функцию обратного вызова внутри обработчик обещания.
Таким образом, в основном, callback();
необходимо поместить в успешный ответ запроса к S3.
Мне не удалось сделать это в приведенном выше фрагменте кода, так как я просто зарегистрировал ответ. Когда я поместил callback();
, я дал команду завершить процесс, и любой запрос API на загрузку данных в S3 никогда не будет выполнен.
Вот упрощенный фрагмент, который работает:
exports.handler = function (context, event, callback) {
S3.upload(getParams(context, event), function (error, data) {
if (error) {
callback(error);
} else {
callback(null, "Data Uploaded");
}
});
};
Это оно. Надеюсь, что это помогает другим. Ура! =)