У меня lambda @ edge работает по запросу клиента.Я сбрасываю сообщения в SQS для обработки другой лямбдой.
Первый запуск моего скрипта после обновления очень длинный - часто проходит через пять секунд, что не очень удобно для пользователя.
Большая часть этого загружается в AWS SDK, постоянно выше 2,5 секунд
var timerstart = new Date();
var timercheck = new Date();
console.log("Time check: 0");
const AWS = require('aws-sdk');
timercheck = new Date();
console.log("Time check - AWS sdk loaded: ", timercheck - timerstart);
Я также загружаю https
const https = require('https');
, что занимает около 120 мсек в первый раззапустить.
Многие последующие запуски полностью завершаются за миллисекунду, немногие превышают 5 мс.
Кто-нибудь еще имел эту проблему - и, надеюсь, нашел способ ее преодолеть?Я ничего не нахожу через гуглфу.Понимание несоответствия между первым и последующим запусками было бы полезно.
Сумасшедшая идея
@ jogold приведет к интересному прочтению.
Почему-то я подумал, что было бы интересно разместить запрос вне экспорта.
От:
'use strict';
exports.handler = async (event, context, callback) => {
const AWS = require('aws-sdk');
//... stuff
До:
'use strict';
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
//... stuff
При первом (довольно определенном) холодном пуске время первой проверки теперь составляет около 300 мс.Возможно, это просто то, о чем все остальные знают, и пробел в моих знаниях о NodeJS, но если кто-то еще придет искать проблемы со временем выполнения Lambda @ Edge, то вам пора.