Aws lambda 返回AWS Lambda错误上的自定义http状态代码
我正在使用AWS Lambda with serverless framework,我希望在出现错误时返回一个自定义http状态代码,但在使用axios调用端点时,我总是得到一个502状态代码Aws lambda 返回AWS Lambda错误上的自定义http状态代码,aws-lambda,axios,serverless,Aws Lambda,Axios,Serverless,我正在使用AWS Lambda with serverless framework,我希望在出现错误时返回一个自定义http状态代码,但在使用axios调用端点时,我总是得到一个502状态代码 module.exports.handler = async (event, context, callback) => { try { // some stuff } catch (err) { // error here let myErrorObj = { errorTyp
module.exports.handler = async (event, context, callback) => {
try {
// some stuff
} catch (err) {
// error here
let myErrorObj = {
errorType : "InternalServerError",
httpStatus : 500,
requestId : context.awsRequestId,
trace : {
"function": "abc()",
"line": 123,
"file": "abc.js"
},
body: err
}
callback(JSON.stringify(myErrorObj));
}
}
但是我要返回的对象包含属性状态:502和数据。消息:内部服务器错误
你知道这是怎么回事吗 您是否将API网关与Lambda一起使用?如果是这样,则回调中返回的内容不正确。返回的对象必须与此格式匹配: 因此,您可以直接调用backerr并让AWS生成一个500,或者如果您希望添加类似以下内容的错误上下文:
let myErrorObj = {
statusCode : 500,
body: JSON.stringify({
requestId : context.awsRequestId,
trace : {
"function": "abc()",
"line": 123,
"file": "abc.js"
}
error: err
}
})
}
callback(null, myErrorObj);
如果需要requestId和trace属性,则需要将它们添加到正文中。状态代码502表示lambda对API网关的响应格式不正确
异步函数的正确响应如果不是serverless YAML文件中规定的集成方法,它将使用Lambda代理集成:
回调仅适用于非异步函数。请参阅全文
export const dummyFunction = async (event, context, callback) =>
{
// ... logic
return {
statusCode: 500,
body: JSON.stringify({...data}),
}
};