我正在试用AWS Lambda。
我已启用Lambda代理集成。
当我尝试使用发布请求查询端点时,出现内部服务器错误。
但是,如果我要使用Javascript进行操作,则会以字符串形式返回响应。
功能如下:
exports.handler = async (event, context) => {
// TODO implement
const response = {
statusCode: 200,
headers: {'Control-Access-Allow-Origin': '*', 'Content-Type': 'application/json'},
body: {
event,
context,
}
};
return response;
};
答案 0 :(得分:0)
首先,您的身体应该是字符串,而不是对象:
const response = {
statusCode: 200,
headers: {'Control-Access-Allow-Origin': '*', 'Content-Type': 'application/json'},
body: JSON.stringify({
event,
context,
})
};
return response;
然后,您可以查看CloudWatch日志以查看问题所在。
答案 1 :(得分:0)
如果您已检查lambda代理集成,则需要此格式作为响应
{
statusCode: 200,
body: JSON.stringify(message),
headers: {'Content-Type': 'application/json'}
}
返回的对象必须具有statusCode,body和headers属性。在上面的示例中,我在标头对象中包含了Content-Type,但是如果需要的话,可以为空。 body的值必须是字符串,如果我们在此处传递用户对象而不将其转换为JSON编码的字符串,则此操作将失败。
如果返回对象不具有这些属性,则在测试Lambda-API网关连接时,将弹出如下错误:
message: "Internal server error".
如果您取消选中lambda代理集成,则可以将所需的任何内容作为响应传递。