2

我准备了一个管道来创建 Lambda 和 API 网关。我的功能是计算器。当我单独测试 Lambda 函数时,如果给出正确的响应,但是当我调用我的 API 网关 URL 并传递相同的 JSON 时,它会给出如下错误。

"

Fri Jun 02 09:17:46 UTC 2017 : Endpoint response body before transformations: "Invalid operator entered"
Fri Jun 02 09:17:46 UTC 2017 : Endpoint response headers: {x-amzn-Remapped-Content-Length=0, x-amzn-RequestId=57991ca2-4774-11e7-bb26-5f9c6ab6fea6, Connection=keep-alive, Content-Length=26, Date=Fri, 02 Jun 2017 09:17:46 GMT, X-Amzn-Trace-Id=root=1-59312d3a-625acffb6cc2497ff543900e;sampled=0, Content-Type=application/json}
Fri Jun 02 09:17:46 UTC 2017 : Execution failed due to configuration error: Malformed Lambda proxy response
Fri Jun 02 09:17:46 UTC 2017 : Method completed with status: 502

"

我的 Lambda 函数如下

exports.calculator = (event, context, callback) => {
    // TODO implement
    var i1 = event.key1;
    var i2 = event.key2;
    var operation = event.key3;
    switch(operation){
        case '+' : callback(null, i1+i2 );break;
        case '-' : callback(null, i1-i2 );break;
        case '*' : callback(null, i1*i2 );break;
        case '/' : callback(null, i1/i2 );break;
        default:callback(null,"Invalid operator entered");break;
    }
};

请有任何建议

谢谢

4

1 回答 1

1

听起来您正在 API Gateway 中使用“代理”风格的 Lambda 集成。您可以在 API Gateway 控制台的“集成请求”页面上确认这一点。

在这种情况下,Lambda 函数生成的响应必须采用以下格式:

{
  "body": "<payload>",
  "statusCode": <http_status_code>,
  "headers" : {
    <response_headers_map>
  }
}

API Gateway 将对此进行解析并为客户端生成匹配的 HTTP 响应。

于 2017-06-02T22:58:02.213 回答