【发布时间】:2019-04-03 10:04:28
【问题描述】:
以下是我的问题陈述 -
1. 我有一个区域 API 网关端点
VPC 私有子网中有一个 Lambda 函数被 Lambda 调用,以访问 RDS。
对 API 网关的 Postman 调用能够调用 Lambda 函数。
Lambda 函数能够正确处理其中的所有内容。
Lambda 函数代码到达代码的响应块,但无法返回响应。
Lambda 函数的安全组允许通过公有子网中的 NAT 网关进行所有出站。
以下是函数处理程序 -
var async = require('async');
var moment = require('moment');
var service = require('./some-service');
exports.handler = (event, context, callback) => {
var requestBody = event['body-json'];
async.waterfall([
function(callback) {
var processRequest = {};
processRequest.validationMessage = validateRequest(requestBody);
if(processRequest.validationMessage == ''){
processRequest.isValid = true;
service.processService(requestBody,function(err, response) {
if(err){
callback(err, null);
}
else{
callback(null, response);
}
});
}
else{
processRequest.isValid = false;
callback(null, processRequest);
}
}
],
function(err, resp) {
let response = {};
if (err) {
response = {
statusCode: 500,
body: JSON.stringify('API Error : ' + err),
};
callback(err, response);
}
else {
if(resp.isValid){
response = {
statusCode: 200,
body: 'Record updated for user_id '+requestBody.user_id,
};
console.log('Success block! ', response);
callback(null, response);
}
else{
console.log('Failure block!');
response = {
statusCode: 500,
body: resp.validationMessage,
};
callback(null, response);
}
}
});
};
function validateRequest(requestBody){
var isValid = '';
if(requestBody['user_id'] == undefined){
console.log('user_id missing');
isValid += 'user_id, ';
}
if(requestBody['added_by'] == undefined){
isValid += 'added_by, ';
}
if(isValid != ''){
isValid = isValid.substring(0, isValid.lastIndexOf(','));
isValid += ' missing in the request';
}
return isValid;
}
CloudWatch 日志显示代码能够到达成功块,
Success block! { statusCode: 200, body: 'Record updated for user_id 17' }
邮递员回应 -
{
"message": "Endpoint request timed out"
}
可能是什么问题?
【问题讨论】:
-
邮递员显示什么?超时,错误消息,还有别的吗?如果修改响应对象的正文是否有效,例如:body: { message: 'Record updated for user_id '+requestBody.user_id}
-
我从头开始创建了一个函数,使用默认节点代码,将该函数放入相同的私有子网和相同的 SG。但是这个被执行了,也响应了 API 网关。现在似乎是代码问题。
标签: node.js amazon-web-services aws-lambda amazon-vpc private-subnet