Я пытаюсь правильно структурировать свою лямбду AWS.Я пытаюсь выйти из Lambda, когда я сталкиваюсь с ошибкой.С помощью простой функции Lambda я делаю это:
exports.handler = async (event, context) => {
const someError = new Error('Something is wrong');
throw someError;
};
Она заканчивается в DeadQueue, как и ожидалось (после нескольких попыток).
Когда я хочу решить ее успешно, я делаюэто:
exports.handler = async (event, context) => {
// ... some code here
return {};
};
Теперь я хочу структурировать свое приложение, используя require, поэтому у меня есть что-то вроде этого:
//Main execution point
const validator = require('./Validate/Validator');
exports.handler = async (event, context) => {
let aaa = validator.validate(operationName);
console.log('I should not bere here')
};
И сам валидатор:
exports.validate = async (schemaName, payload) => {
console.log('I am coming here')
try {
const Schema = require(`../ValidationSchemas/${schemaName}`).schema;
}
catch (e) {
const schemaError = new Error('Validation schema not found. Operation does not exist.');
throw schemaError;
//process.exit(0);
}
};
Что происходит в валидаторе, если я выбрасываю ошибку, выдается ошибка, но мое выполнение продолжается в основной (вызывающей) лямбда-функции.Я думал, чтобы остановить его, используя
process.exit (0)
Это работает.Лямбда прекращается.Но это выглядит как плохой подход по некоторым причинам.В идеале я бы сделал это из основной функции, но я думаю о лучшем подходе.