【发布时间】:2023-04-07 07:27:01
【问题描述】:
我正在尝试从我的 lambda 函数返回错误,但对于所有错误,它只返回状态 502 和消息 Internal server error。以前它只是为所有类型的返回错误返回cors 错误。在 api 网关响应中添加 'Access-Control-Allow-Origin' : '*' 后,我收到 502 错误。我在 catch 块中记录了抛出的错误,我可以在 CloudWatch 中看到具体错误。我已经看到了这个question,但这并没有帮助。请注意,我使用的是async await,而不是使用callback。我也试过没有lambda-proxy集成,但响应是一样的。在lambda-proxy 的情况下我需要配置其他东西吗?
const test = async (event, context) => {
try {
context.callbackWaitsForEmptyEventLoop = false;
const error = { status: 400, message: 'my custom error' };
throw error;
} catch(error) {
console.log('==== error ====', error);
return createErrorResponse(error.status || 500, error.errors || error.message);
}
创建错误响应
const createErrorResponse = (statusCode, message, stack={}) => ({
statusCode,
headers: {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Credentials': true,
},
body: JSON.stringify({
error: message
}),
stack: JSON.stringify({ stack })
});
export default createErrorResponse;
serverless.yml
test:
handler: api/index.test
timeout: 360
events:
- http:
path: test-lambda-api
method: post
cors: true
【问题讨论】:
标签: node.js aws-lambda aws-api-gateway serverless