我正在尝试正确构建我的AWS lambda。遇到错误时,我试图退出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);
}
};
在验证器中会发生什么,如果我引发错误,则会引发错误,但是我的执行将在主要(调用方)lambda函数中继续进行。我想使用
将其停止process.exit(0)
它确实起作用。 Lambda终止。但是出于某种原因,这似乎是一种不好的方法。理想情况下,我将从主要功能执行此操作,但是我正在考虑最佳方法。
答案 0 :(得分:1)
您需要在Lambda函数中实现错误处理。
const validator = require('./Validate/Validator');
exports.handler = (event) => {
try {
let aaa = validator.validate(operationName);
}
catch (error) {
return error;
}
};