我正在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.这非常令人困惑,请让我知道我哪里出错了,我该如何解决这个问题 .
谢谢
1 回答
API Gateway期望从Lambda返回以下属性:
所以,而不是
callback(null, jsonBody)
,你应该像这样调用callback
: