Время вызова lambda.invoke через Node AWS SDK истекает через 5 минут, в то время как лямбда завершается менее чем за 4 минуты - PullRequest
0 голосов
/ 05 октября 2018

У меня есть лямбда-функция, которая настроена на тайм-аут на 5 минут, и иногда, когда я вызываю функцию с помощью node SDK, я получаю ошибку тайм-аута через 5 минут.

Однако, когдаЯ проверил журналы CloudWatch после получения ошибки на стороне клиента и вижу, что функция успешно завершена через ~ 3: 30 минут времени выполнения.

Я также заметил, что на стороне клиента будет регистрироваться тайм-аут 2За несколько минут до того, как журналы CloudWatch прочитают, что функция завершена (т. е. временные метки ошибок на стороне клиента в 4:08 и временные метки успешного завершения CloudWatch в 4:10), но я предполагаю, что это задержка между записями журнала, а не временем выполнения.Думаю, я бы упомянул об этом на всякий случай, о чем стоит подумать подробнее.

Из того, что я могу сказать, когда функция выполняется менее двух минут, она последовательно получает положительный ответ.

Код выглядит так:

let aws_config = new AWS.Config({
    region: 'us-east-1',
    credentials: credentials,
    httpOptions: { 
        proxy: process.env.HTTP_PROXY,
        timeout: 300000
    }
})

var lambda = new AWS.Lambda(aws_config);

lambda.invoke(params, (err, data: Result) => {
  ...
}

Ошибка выглядит так:

{ TimeoutError: Connection timed out after 300000ms
at ClientRequest.<anonymous> (.../node_modules/aws-sdk/lib/http/node.js:83:34)
at Object.onceWrapper (events.js:273:13)
at ClientRequest.emit (events.js:182:13)
at ClientRequest.EventEmitter.emit (domain.js:442:20)
at Socket.emitRequestTimeout (_http_client.js:661:40)
at Object.onceWrapper (events.js:273:13)
at Socket.emit (events.js:182:13)
at Socket.EventEmitter.emit (domain.js:442:20)
at Socket._onTimeout (net.js:449:8)
at ontimeout (timers.js:425:11)
message: 'Connection timed out after 300000ms',
  code: 'TimeoutError',
  time: 2018-10-05T20:08:35.719Z,
  region: 'us-east-1',
  hostname: 'lambda.us-east-1.amazonaws.com',
  retryable: true } 'TimeoutError: Connection timed out after 300000ms\n    at ClientRequest.<anonymous> (.../node_modules/aws-sdk/lib/http/node.js:83:34)\n    at Object.onceWrapper (events.js:273:13)\n    at ClientRequest.emit (events.js:182:13)\n    at ClientRequest.EventEmitter.emit (domain.js:442:20)\n    at Socket.emitRequestTimeout (_http_client.js:661:40)\n    at Object.onceWrapper (events.js:273:13)\n    at Socket.emit (events.js:182:13)\n    at Socket.EventEmitter.emit (domain.js:442:20)\n    at Socket._onTimeout (net.js:449:8)\n    at ontimeout (timers.js:425:11)'

1 Ответ

0 голосов
/ 06 октября 2018

Рассматривали ли вы

context.callbackWaitsForEmptyEventLoop = false;

Вот соответствующее сообщение SO: Почему функция AWS Lambda всегда отключается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...