【发布时间】:2019-08-21 18:53:45
【问题描述】:
在这一天,我遇到了 aws lambda 的问题。我需要通过将用户名传递给 lambda 来搜索 RDS postgres db,但在每个测试事件中它都会返回:
"{
"errorMessage": "RequestId: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 Process exited before completing request"
}"
特别是堆栈返回:
START RequestId:070f76a4-41c6-40d1-8ef2-0a84d9c04af0 版本:$LATEST 2019-03-31T12:32:19.572Z 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 类型错误: 路径必须是字符串。收到未定义 在 assertPath (path.js:28:11) 在 Object.join (path.js:1236:7) 在 Object.module.exports.getFileName (/var/task/node_modules/pgpass/lib/helper.js:61:16) 在 module.exports (/var/task/node_modules/pgpass/lib/index.js:10:23) 在连接处。 (/var/task/node_modules/pg/lib/client.js:110:9) 在 emitOne (events.js:116:13) 在 Connection.emit (events.js:211:7) 在套接字。 (/var/task/node_modules/pg/lib/connection.js:125:12) 在 emitOne (events.js:116:13) 在 Socket.emit (events.js:211:7) END RequestId: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 REPORT RequestId: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 持续时间:583.72 毫秒 持续时间:600 毫秒内存大小:128 MB 使用的最大内存:35 MB
RequestId: 070f76a4-41c6-40d1-8ef2-0a84d9c04af0 进程之前退出 完成请求
const AWS = require('aws-sdk');
global.fetch = require('node-fetch');
var Pool = require('pg').Pool;
const psql = new Pool ({
host: '',
user: '',
password: '',
database: 'metadata',
port: 5432
})
function searchUser(username){
return new Promise((resolve, reject) => {
psql.query("SELECT username FROM utilitator where username LIKE '%$1%'", [username], {
onSucces: function(res){
resolve(res.rows);
},
onFailure: function(err){
resolve("err");
},
});
});
}
exports.handler = async (event, context, callback) => {
//var body = JSON.parse(event.body);
var username = event.username;
var response = {
"statusCode": 200,
"isBase64Encoded": false,
"body": {},
}
try{
var result = await searchUser(username).then((result) => {
return result;
});
var statusCode = 200;
var body = result;
if(result == "err"){
statusCode = 400;
body = "user not found";
}
response.statusCode = statusCode;
response.body = body;
callback(null,response);
}
catch(e){
callback(e,{
"isBase64Encoded": false,
"headers": {},
"body": "err",
"statusCode": 501
});
}
};
我希望 Lambda 返回 db 中所有与我传递的用户名相似的用户。
【问题讨论】:
标签: node.js postgresql amazon-web-services aws-lambda