AWS lambda api 网关错误“格式错误的 Lambda 代理响应”

新手上路,请多包涵

我正在尝试使用 AWS lambda 设置一个 hello world 示例并通过 api 网关为其提供服务。我单击“创建 Lambda 函数”,它设置了 api 网关并选择了空白函数选项。我添加了 AWS 网关入门指南 中的 lambda 函数:

 exports.handler = function(event, context, callback) {
  callback(null, {"Hello":"World"});  // SUCCESS with message
};

问题是当我向它发出 GET 请求时,它返回 502 响应 { "message": "Internal server error" } 。并且日志显示“由于配置错误,执行失败:格式错误的 Lambda 代理响应”。

原文由 jjbskir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 879
2 个回答

通常,当您看到 Malformed Lambda proxy response 时,这意味着您的 Lambda 函数的响应与 API Gateway 期望的格式不匹配,如下所示

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "..."
}

如果您不使用 Lambda 代理集成,您可以登录 API Gateway 控制台并取消选中 Lambda 代理集成复选框。

此外,如果您看到间歇性 Malformed Lambda proxy response ,这可能意味着对您的 Lambda 函数的请求已被 Lambda 限制,您需要请求增加 Lambda 函数的并发执行限制。

原文由 Ka Hou Ieong 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果使用 lambda 作为代理,那么响应格式应该是

{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"body": "..."
}

注意:正文应该被字符串化

原文由 selftaught91 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题