Я планирую перенести конфигурацию своей лямбда-функции из переменных среды в DynamoDb, поскольку мои лямбда-функции совместно используют конфигурации, а также я не хочу повторно развертывать свои лямбда-функции каждый раз, когда меняется конфигурация (моя конфигурация часто меняется и после того, как они это делают Я должен перераспределить так много лямбда-функций).
Но для того, чтобы улучшить производительность моих лямбда-функций, а также снизить стоимость, я не собираюсь загружать конфигурацию для каждого выполнения. Вместо этого я загружу конфигурацию в глобальную переменную, и поскольку глобальные переменные сохраняются при выполнении (до тех пор, пока лямбда-функция разогревается), я могу повторно использовать эту конфигурацию, не обращаясь к DynamoDb. Вот пример кода:
let config = null;
function getConfig() {
if (config)
return Promise.resolve(config);
else {
//Load config from DynamoDb and return it in form of a promise
}
}
exports.handler = function(event, context, callback) {
getConfig()
.then(config => {
//Your code that makes use of config
})
}
Пока все в порядке. Теперь рассмотрим время, когда DynamoDb обновляется с новой конфигурацией. Разогретые лямбда-функции будут продолжать использовать старую конфигурацию, прежде чем они будут отключены AWS и столкнутся с холодным стартом.
Что я хочу сделать, так это сигнализировать о лямбда-функциях и заставлять их сбрасывать прогретые лямбда-функции и запускаться каждый раз при изменении конфигурации. Я знаю, что могу перераспределить их, что будет делать именно то, что я хотел. Но это именно то, от чего я вообще сбежал. Итак, какие у меня варианты?