【发布时间】:2018-05-11 13:15:54
【问题描述】:
我正在 node.js 中编写一个 lambda,它将调用一个 api(post) 并返回结果正文,代码如下。
const AWS = require('aws-sdk');
const request = require('request');
exports.handle = function(e, ctx, callback) {
var bodyDetails = {
uri: "myURL",
json: {
"requestChannel": "web1" },
"method": "POST"
};
callback = ctx.done;
var data = e.bodyJson || {};
request(bodyDetails, function(error, response, body) {
if (!error && response.statusCode === 200) {
console.log(JSON.parse(JSON.stringify(body)));
jsonBody = JSON.parse(JSON.stringify(body));
console.log(body + "\t from suvccess") // Print the json response
callback(null, jsonBody); // Return the JSON object back to our API call
} else {
callback(error);
}
});
}
我正在我的 lambda 控制台中进行相同的测试。通过传递一个空白 json {} 我得到了正确的响应。
现在我的下一个计划是将这部分与 API Gateway 集成。所以我在apigateway 中为此创建了一个api,并在其中创建了一个名为home 的资源。在家里,我创建了一个GET 方法。有以下详细信息。
Integration type: Lambda Function
Use Lambda Proxy integration : checked
Lambda Region: us-east-1
Lambda Function: myWorkingLambdaName
当我使用 apigateway 提供的 test 选项对此进行测试时。我得到的回应是
Request: /home
Status: 502
Latency: 2942 ms
Response Body
{
"message": "Internal server error"
}
当我看到我的控制台时,我看到打印成功块的值,但状态码是 502。这非常令人困惑,请让我知道我哪里出错了,我该如何解决这个问题。
谢谢
【问题讨论】:
-
出于好奇,您为什么不在 API 网关上使用 HTTP 代理集成,而不是使用 lambda 桥接呢? - docs.aws.amazon.com/apigateway/latest/developerguide/…
标签: amazon-web-services aws-lambda aws-api-gateway