更改AWS Lambda函数中的返回类型?

时间:2019-03-21 08:34:59

标签: amazon-web-services aws-lambda

我正在试用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;
};

2 个答案:

答案 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代理集成,则可以将所需的任何内容作为响应传递。