只需试用Lambda和nodejs。 我有一个超时错误,每隔几次就会发生。
我的nodejs代码在下面。
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 100,
host : 'hostname',
user : 'username',
password : 'password',
database : 'database',
port : 3306
});
exports.handler = async (event, context, callback) => {
let request = JSON.parse(event.body);
let sId = request.sid;
let questionnaireId = request.questionnaireId;
pool.getConnection((error, connection) => {
if (error) throw error;
let sql = "INSERT INTO answers (qId, sId,) VALUES(" + questionnaireId + ", " + sid + ")";
connection.query(sql, function(err, result){
if(err) throw err;
console.log("Successfull Insert")
connection.release();
});
});
const response = {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': true
},
body: JSON.stringify({message : 'success'}),
};
return response;
};
Cloudwatch显示以下消息。
“ errorMessage”:“连接ETIMEDOUT”, “ code”:“ ETIMEDOUT”,
谢谢。
答案 0 :(得分:0)
尝试从处理程序中删除callback
参数。您正在从函数中返回承诺,因此您不需要它。
将callback
定义为一个参数可能会使aws认为您将在函数完成执行时调用它,而如果不这样做,则会产生超时错误。
答案 1 :(得分:0)
替换
return response;
与此:
callback(null, response)
参考:https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html