AWS лямбда, получающая обработчик или контекстную информацию в node js - PullRequest
0 голосов
/ 09 июля 2020

У меня есть SDK, который я включаю в свою лямбда-функцию. Этот SDK отвечает за сбор информации о контексте лямбда-функции и отправляет ее на мой удаленный сервер. Ниже приведен мой пример лямбда-кода

import mymodule 

 exports.handler = async (event, context, callback) => {
    var array = [];
    var count = 11000000; //loop to max number just to make sure we hit the limit
  // var count = 110000
    const str = "This is the memory error, will get the memory error.";
    
    //Start appending array with the string  
    for (var i = 0; i < count; i++) {
      array.push(str);
    }
  
    console.log(array);
  };

в моем коде SDK. Я захватываю lambda_ bootstrap следующим выражением

lambda_bootstap = require.main

, это возвращает мне большинство параметров, но не возвращает context любая помощь в получении лямбда-контекста в моем SDK была бы замечательной. TIA

1 Ответ

1 голос
/ 09 июля 2020

Вы импортируете mymodule на уровне модуля, что означает, что ваш SDK будет создан вне контекста вызова. Таким образом, ваш SDK будет вызываться только при холодном запуске, а не при каждом вызове. context доступен только внутри самого вызова.

Если вы используете sh, чтобы получить context (который меняется при каждом вызове), вам необходимо вызвать свой SDK внутри обработчика.

По сути, вам нужно создать оболочку для обработчика Lambda, чтобы вы могли вызывать свой SDK при каждом вызове. Middy JS предоставляет вам некоторые шаблоны того, как это сделать .

...