【发布时间】:2021-05-10 21:59:45
【问题描述】:
用 Postman 进行测试,我会尽量把这点说清楚,如果这没有意义,请指教。
我有一个 Lambda,它在 AWS 上使用 MySQL RDS 数据库,并且在访问 AWS 上的数据库时可以在本地正常工作。从auth 端点成功获取 JWT 后,我尝试访问login 端点并得到502 Bad Gateway。使用 CloudWatch 日志,我可以在登录查询运行之前跟踪故障。我已经确认我的 MySQL 配置是正确的并且我已经连接到数据库。 lambda 和数据库在同一区域DB: us-east-1f、lambda: us-east-1。
我已确认此端点的 OPTIONS 和 POST 请求方法均设置为在 API 网关中启用了 CORS。我正在使用我的 serverless.yml 在所有端点上设置 cors: true,即使我在我的索引文件中使用了 app.use(cors())。
502 的错误消息是 {"message": "Internal server error"}
这是我的代码中的失败点:
'use strict';
const mysql = require('./index');
module.exports = {
loginSql: async (email, password) => {
// MAKES IT HERE AND THE PARAMS ARE CORRECT
try {
console.log('IN TRY %%%%%%%%%%%%%%');
// SEEMS TO DIE HERE
const results = await mysql.query({
sql: `SELECT
id, first_name, last_name, email
FROM users
WHERE email = ?
AND password = ?`,
timeout: 50000,
values: [email, password],
});
// NEVER MAKES IT HERE /////////
console.log('QUERY RAN %%%%%%%%%%%%');
mysql.end();
if (results.length < 1) return false;
return results;
} catch (error) {
// DOESN'T THROW ERROR
console.log('LOGIN DB ERROR', error);
throw new Error('LOGIN DB ERROR THROWN', error);
}
},
};
【问题讨论】:
-
这里的
mysql是什么? -
这是我连接到数据库时返回的
serverless-mysql对象。
标签: mysql node.js amazon-web-services aws-lambda