Я хотел бы иметь возможность доступа к имени этапа 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;
};