Это мой первый Awnser в стеке, поэтому, пожалуйста, потерпите меня.
Я столкнулся с той же проблемой в недавнем проекте, и есть несколько вещей, которые вы можете проверить.
Сколько времени занимает вызов API?
Если ваш вызов API занимает много времени, стоит проверить настройки тайм-аута в вашей функции Lambda. Консоль AWS -> Лямбда -> Ваша функция -> Основные настройки -> Время ожидания .
Завершается ли ваша функция Lambda до вызова API?
Я исправил эту проблему, создав модуль узла для обработки моей бизнес-логики. В модуле есть функция getNextSlot, которую он возвращает как Promise. Внутри этой функции я проверяю входящее событие и выясняю, какой слот мне нужно вызывать дальше, часть моего потока - вызов конечной точки API, для завершения которой требуется около 10 секунд.
Я использую запрос-обещание , чтобы сделать вызов API, этот узел узла гарантирует, что лямбда-функция продолжает работать, пока выполняется вызов.
exports.getData = function (url, data) {
var pr = require("request-promise");
var options = {
method: 'POST',
url: 'api.example',
qs: {},
headers:
{
'Content-Type': 'application/json'
},
body: {
"example": data
},
json: true,
timeout: 60000
};
return pr(options);
}
В моем основном коде я называю эту функцию как:
apiModule.getData("test", "data")
.then(function (data) {
//Execute callback
})
.catch(function (error) {
console.log(error);
reject(error);
});
Это все равно решило проблему для меня.
Спасибо