从Node.js中的Lambda出现问题时,我正在响应以下内容:
if (error) {
logger.error(error.errorMessage, error.stack);
callback('Error getting some data', {
statusCode: 500,
headers: {"Access-Control-Allow-Origin": "*"}
});
}
直接从Gateway API控制台测试端点,我可以看到以下响应:
总结:
有人可以解释这种奇怪的行为吗?
答案 0 :(得分:0)
问题是回调函数的第一个参数。我正在这样做:
if (error) {
logger.error(error.errorMessage, error.stack);
callback('Error getting some data', {
statusCode: 500,
headers: {"Access-Control-Allow-Origin": "*"}
});
}
当我需要将null作为第一个参数传递给回调时。例如:
if (error) {
logger.error(error.errorMessage, error.stack);
callback(null, {
statusCode: 500,
headers: {"Access-Control-Allow-Origin": "*"}
});
}
另一种选择是不调用回调函数直接返回对象。
exports.handler = async (event) => {
return response = {
statusCode: 500,
headers: {"Access-Control-Allow-Origin": "*"},
body: JSON.stringify({
errorMessage: "This is a custom internal server error"
})
};
};
为什么?我的猜测是,仅当您自定义Gateway API的响应时,才评估回调的第一个参数。换句话说,当您没有与lambda进行代理集成时。
但我不确定100%。也许有人可以给出更好的解释。