Как получить доступ к этапу в глобальной области видимости вне функции обработчика - PullRequest
0 голосов
/ 04 июля 2019

Я хотел бы иметь возможность доступа к имени этапа API GW, который был вызван в глобальной области (т. Е. Вне функции-обработчика).

В моей лямбде я хочу создать свой пул соединений с БД в глобальной области видимости, чтобы он мог повторно использоваться при последующих вызовах лямбда (таким образом потенциально повышая производительность таких последующих вызовов). Очевидно, пул соединений определяется конфигурацией - и мне нужно будет иметь возможность использовать разные значения конфигурации для каждого этапа (и я получу доступ к соответствующим значениям на основе этого имени этапа).

Проблема в том, что я не могу найти какой-либо способ определения имени этапа, пока не попаду в фактический вызов обработчика (предусмотренный в иерархии объекта события).

Я хочу иметь возможность сделать что-то вроде этого:

const stageName = <????how to get this???>;
const config = require(`./${stageName}/config`);
const pool  = mysql.createPool({
    connectionLimit : config.dbconnectionLimit,
    host            : config.dbhost,
    port            : config.dbport,
    user            : config.dbuser,
    password        : config.dbpassword,
});

exports.handler = async (event, context) => {
 let response = {};

 // NOTE: I can easily access the stageName here as event.context.stage
 // as well as any stageVariables under event['stage-variable'].<stageVariableName>
 // However, this is too late to realize the potential performance benefit across
 // subsequent lambda invocations by creating the DB pool in global scope 
 // as opposed to locally within the handler itself

 // ... lambda implementation here (omitted for brevity)  

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