Я не уверен, правильный ли вопрос здесь или он лучше подходит для суперпользователя. Однако, поскольку я думаю, что могу что-то не так со своим кодом, я пробую здесь.
Я создал небольшую лямбда-функцию прокси для вызова моего REST API. Я использую node.js и пакет запроса. Вот мой код:
exports.handler = function (request, context) {
require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
if (error) {
console.info("Something went wrong:\n" + JSON.stringify(error, null, 2));
context.succeed({failed:true})
} else {
console.info("Returning remote response:\n" + JSON.stringify(body, null, 2));
context.succeed(body);
}
});
console.info("Forwarding request to own backend:\n" + JSON.stringify(request, null, 2));
};
На самом деле в этом нет ничего особенного, но я подумал, что запрос должен быть отменен через 1000 мс. Но я часто вижу, что выполнение было отменено из-за таймаута 3000 мс. Я увеличил его до 30000 мс, и он начинает работать. Иногда лямбда выполняется в пределах 500 мс, но тогда в следующий раз требуется 3100 мс. Я не понимаю, почему это происходит. Просвети меня, пожалуйста.





это, вероятно, из-за нормального поведения под названием Холодный старт
When using AWS Lambda, provisioning of your function's container can take >5 seconds. That makes it impossible to guarantee <1 second responses to events such as API Gateway, DynamoDB, CloudWatch, S3, etc.
вот хороший статья от бессерверный о том, что это такое и как с этим бороться.